为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

5 回答

对了,我刚试过,我建议你这样可以一次删除所有元素:

var content = document.getElementById("content");
var h1s= content.childNodes;
var length = h1s.length;
for(var i = 0; i<length; i++)
{
    content.removeChild(h1s[0]);
 }
 这样就可以一直移除第一个节点了。移除11次。


0 回复 有任何疑惑可以回复我~

因为下标更新了.

用b代表空白节点,那么ul之间的节点序列应该是:

b html b php b javascript b jquery b java b

第一次删除时,删除0号节点b,剩余html b php b javascript b jquery b java b

第二次删除时,删除1号节点b,由于此时节点已经更新, html变成0号节点,删除的还是html后面的节点b。与此同时,<li>标签节点的值也在增加,html变成0号,php变成1号,javascript变成2号节点,以此类推.因此第一次删除的是所有的空格。第二次删除html javascript java第三次删除js,第四次删除jquery.

也就是隔山打牛.

1 回复 有任何疑惑可以回复我~

你应该把4改为content.childNodes.length,因为他实际上不止4个节点,在子节点中两个标签之间的空格或换行都被解析为一个子节点(文本节点)。比如:

<ul>

<li>慕课网</li>

</ul>

这一段代码就有3个子节点了


0 回复 有任何疑惑可以回复我~

你的运行结果是只有 html 和php被删了吗 如果是的话 加一个判定条件应该就好了

for(var i=content.childNodes.length-1;i>=0;i--){

var x=content.childNodes;

 if(x[i].nodeType==1){

content.removeChild(x[i]);


}

因为content 的长度其实是 11 不是 4 其中包括了几个空白节点

0 回复 有任何疑惑可以回复我~

浏览器兼容问题,节点之间的空白符,在firefox、chrome、opera、safari浏览器是文本节点

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468982    人
  • 解答问题       22582    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

求大神解答

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号