最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

html5中JavaScriptremoveChild删除所有节点_html5教程技巧

来源:动视网 责编:小采 时间:2020-11-27 15:18:51
文档

html5中JavaScriptremoveChild删除所有节点_html5教程技巧

html5中JavaScriptremoveChild删除所有节点_html5教程技巧:假设div里有这么些内容: 代码如下: iScroll demo: simple function deleteData(){ } body,ul,li { padding:0; margin:0; border:0; } body { font-size:12px; -webkit-user-select:none; -webk
推荐度:
导读html5中JavaScriptremoveChild删除所有节点_html5教程技巧:假设div里有这么些内容: 代码如下: iScroll demo: simple function deleteData(){ } body,ul,li { padding:0; margin:0; border:0; } body { font-size:12px; -webkit-user-select:none; -webk


假设div里有这么些内容:

代码如下:




iScroll demo: simple

function deleteData(){
}







  • Pretty row 1

  • Pretty row 2

  • Pretty row 3

  • Pretty row 4

  • Pretty row 5

  • Pretty row 6

  • Pretty row 7

  • Pretty row 8

  • Pretty row 9

  • Pretty row 10

  • Pretty row 40




  • 现在要通过JavaScript的功能,将它们清空。

    虽然可以通过一句代码直接实现:

    document.getElementById("content").innerHTML=""

    但是本文里主要讨论 removeChild 函数。

    很想当然地以为借助下面的代码就能完成:

    代码如下:
    function deleteData(){
    var el = document.getElementById('thelist');
    var liNodes = document.getElementsByTagName("li");
    alert(liNodes.length);
    for(var i = 0; i < liNodes.length; i++){
    alert("删除"+i+" liNodes[i]="+ liNodes[i]);
    el.removeChild(liNodes[i]);
    //<-- el.removeChild(liNodes[i]);
    }
    }

    没想到,点击了按钮后,竟然只清除掉1、3、5...,而2、4、6....竟然没有消失,

    问题从一开始就产生了:

    删除掉第一个节点后,后面节点的顺序全部发生了变化:原来的第二个节点往前蹭,成为新的第一个节点;原来的第三个节点,成为第二个节点……

    于是呢,接下来原本是要删除第二个节点的,却将最原始的第三个节点给删除掉了。

    最终,并没有全部删除,只删除掉1、3、5,留下了2、4、6。

    语法没有错误,但是得不到所要的结果,这就是算法上面的错误!该如何修正呢?

    “顺序删除”不行,那就“逆序删除”吧。将 for 语句修改一下:

    代码如下:
    function deleteData(){
    var el = document.getElementById('thelist');
    var liNodes = document.getElementsByTagName("li");
    alert(liNodes.length);
    for(var i = liNodes.length-1; i >=0; i--){
    alert("删除"+i+" liNodes[i]="+ liNodes[i]);
    el.removeChild(liNodes[i]);
    //<-- el.removeChild(liNodes[i]);
    }
    }

    试试吧,成功了!还可以使用下面方法:

    代码如下:
    function deleteData() {
    var el = document.getElementById('thelist');
    var liNodes = document.getElementsByTagName("li");
    alert(liNodes.length);
    for (var i=0;ivar childNode = el.childNodes[0]; //总是删除第一个,是不是更简单
    el.removeChild(childNode);
    }
    }

    完成代码如下所示:

    代码如下:




    iScroll demo: simple

    function initData(){
    var el = document.getElementById('thelist');
    var liNodes = document.getElementsByTagName("li");
    alert(liNodes.length);
    for(var i = liNodes.length-1; i >=0; i--){
    alert("删除"+i+" liNodes[i]="+ liNodes[i]);
    el.removeChild(liNodes[i]);
    //<-- el.removeChild(liNodes[i]);
    }
    }







  • Pretty row 1

  • Pretty row 2

  • Pretty row 3

  • Pretty row 4

  • Pretty row 5

  • Pretty row 6

  • Pretty row 7

  • Pretty row 8

  • Pretty row 9

  • Pretty row 10

  • Pretty row 40





  • 文档

    html5中JavaScriptremoveChild删除所有节点_html5教程技巧

    html5中JavaScriptremoveChild删除所有节点_html5教程技巧:假设div里有这么些内容: 代码如下: iScroll demo: simple function deleteData(){ } body,ul,li { padding:0; margin:0; border:0; } body { font-size:12px; -webkit-user-select:none; -webk
    推荐度:
    标签: 删除 html5 html
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top