作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我有
<p>someword here</p>
<span>another thing here</span>
<div id="text">other thing here</div>
<!-- any other html tags -->
如何在内容的第一个和最后一个位置插入空格?
我想要的结果是
<p> someword here </p>
<span> another thing here </span>
<div id="text"> other thing here </div>
<!-- after tags like <p> and before </p> there have one space -->
最佳答案
天真的(而且不正确!)例子是:
var victims = document.querySelectorAll('body *');
for( var i = 0; i < victims.length; i++ ) {
victims[i].innerHTML = " " + victims[i].innerHTML + " ";
}
但是一旦你运行它,你会发现你所有的元素都被破坏了!因为,当您更改 innerHTML
时,您也在更改子元素。但是我们可以通过不替换内容而是添加内容来避免这种情况:
var padLeft = document.createTextNode( " " );
var padRight = document.createTextNode( " " );
victims[i].appendChild( padRight );
victims[i].insertBefore( padLeft, victims[i].firstChild );
看起来很酷!但是,哦不——我们毁了我们的脚本标签、图像等等。让我们也解决这个问题:
var victims = document.querySelectorAll('body *');
for( var i = 0; i < victims.length; i++ ) {
if( victims[i].hasChildNodes ) {
var padLeft = document.createTextNode( " " );
var padRight = document.createTextNode( " " );
victims[i].appendChild( padRight );
victims[i].insertBefore( padLeft, victims[i].firstChild );
}
}
这里是脚本 :) 它不是一直到 Netscape4 的跨浏览器,但足以理解基本思想。
关于javascript - 如何在 DOM 元素的内容前后插入空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504380/
我是一名优秀的程序员,十分优秀!