努力学习碳
2019-11-11 09:18
<script type="text/javascript">function clearText() { var content=document.getElementById("content"); var a=content.childNodes; // 在此完成该函数 for(i=0;i<a.length;i++){ var r=content.removeChild(content.childNodes[i]); r=null; } }</script>
加上
x = null;
我也是这样,后面想明白了。这是因为删除子节点的同时,子节点数组的数量也减少了。以你的代码为例,最开始a数组长度为11(包含了若干空值):["","html","","php","","javascript","","jquery","","java",""]
第一次点按钮时,for i=0时,删除了第一个空值。此时数组的第一个元素被删掉了,所以i=1时,删除的其实是第二个空值,一次类推,恰巧把所有空值给删除了,所以你点第一次按钮就看到没有任何变化!
当你第二次点按钮时,数组变成了):["html","php","javascript","jquery","java"]。同上,这次删除了html、javascript、java,所以剩下了php和jquery!
第三次点按钮,剩下了jquery。
第四次点按钮,才删完。
所以说,要一次性全删完,要改进算法。
<script type="text/javascript">
// 清除空白节点
function cleanWhitespace(element)
{
for(i=0; i<element.childNodes.length; i++)
{
var node = element.childNodes[i];
if(node.nodeType == 3 && !/\S/.test(node.nodeValue))
{
node.parentNode.removeChild(node);
}
}
}
cleanWhitespace(document.getElementById("content"));
function clearText() {
var content=document.getElementById("content");
// 在此完成该函数
var xchild=content.childNodes;
for(i=0;i<xchild.length;i++){
var xclose=content.removeChild(xchild[i]);
xclose=null;
return xclose;
}
}
</script>
<button onclick="clearText()">清除节点内容</button>
因为空白节点的问题,除了IE浏览器,其他浏览器都会计算空白节点,第一点执行了,只不过删除的是空白节点,你可以清除空白节点
我的是点击一下没反应,第二次点击他会直接删除三个。接来下就正常删除了,不知道为啥
function clearText() {
var content=document.getElementById("content");
// 在此完成该函数
var sons = content.childNodes;
for(var i=sons.length-1;i>0;i--){
content.removeChild(sons[0]);
}
}
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题