node.removeChild()是唯一一个可以删除节点的方法。但是remove之后它是删除了,在内存中还在。删除了一个节点后其它结点删除就会出现问题,问怎么用这个方法完全删除这个节点,让这个节点后面的节点下标减1

解决方案 »

  1.   

    removeChild()是从父节点中移除指定子节点。只是把子节点从页面上移除了(前提是父节点在页面上)。
    如果有变量还存有对这个子节点的引用,它就不会真正的删除,还在内存中,还可以用appendChild()添加回页面上。
    只有任何变量都不存有其引用时,它才会真正的被删除。
      

  2.   

    节点从页面上移除后,这个节点后面的节点下标会不会减1,要看是哪里的下标:
    如果是 childNodes和getElementsByTagName()返回的集合中的下标会减1。
    如果是你自己创建的数组或者jquery对象中的下标不会减1要注意在循环操作时,如果后面的节点下标减1,你的循环变量也应该减1才能正确获取后面的节点,
    一般在做循环判断移除节点时都是倒着循环比较好,这样就不会因为下标减1影响之后的循环。
      

  3.   

    点击元素this或者e.target的就是被点击的元素了  dom.parentNode.removeChild 不用下标啊