为什么要点两下才能删除一个li节点 原来是空白节点作怪

简介:

奇怪吧,下面的代码居然要点两次button才能删除一个li节点:

复制代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
 </head>

 <body>
<ul id="myUl"> <!-- 这样会有空白节点  -->
<li>111</li>
<li>222</li>
<li>333</li>
</ul>

  <button onclick="removeLi();" >removeLi</button>
 </body>
</html>

<script type="text/javascript">
<!--
    // 奇怪吗?为什么要点两下
    function removeLi(){
        var ul=document.getElementById("myUl");
        var li=ul.firstChild;
        ul.removeChild(li);        
    }
//-->
</script>
复制代码

 

用ul.childNodes.length查看一下,原来是空白节点在作怪,这样就好了:

复制代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
 </head>

 <body>
<ul id="myUl"><li>111</li><li>222</li><li>333</li></ul> <!-- 这样就消除了空白节点,firstChild是第一个li了  -->

  <button onclick="removeLi();" >removeLi</button>
 </body>
</html>

<script type="text/javascript">
<!--
    // 现在一下就删除li
    function removeLi(){
        var ul=document.getElementById("myUl");
        var li=ul.firstChild;
        ul.removeChild(li);        
    }
//-->
</script>
复制代码

选ul的子节点时限定li也可行:

复制代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
 </head>

 <body>
<ul id="myUl">
<li>111</li>
<li>222</li>
<li>333</li>
</ul>

  <button onclick="removeLi();" >removeLi</button>
 </body>
</html>

<script type="text/javascript">
<!--
    // 
    function removeLi(){
        var ul=document.getElementById("myUl");
        var li=ul.getElementsByTagName("li")[0];// 这样直接无视空白节点,是推荐做法
        ul.removeChild(li);        
    }
//-->
</script>
复制代码

 








本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/xiandedanteng/p/7464909.html,如需转载请自行联系原作者


相关文章
|
15天前
|
JavaScript
怎么判断两个文档节点、网页元素(element)是否相同?判断两个DOM节点是否相等、相同的4种方法
怎么判断两个文档节点、网页元素(element)是否相同?判断两个DOM节点是否相等、相同的4种方法
|
3月前
面试题 02.01:移除重复节点
面试题 02.01:移除重复节点
17 0
获取当前点击li的元素的节点下标
获取当前点击li的元素的节点下标
|
9月前
节点的创建、添加、删除
节点的创建、添加、删除
70 0
|
前端开发
前端学习案例4-删除两个子节点的情况
前端学习案例4-删除两个子节点的情况
29 0
前端学习案例4-删除两个子节点的情况
|
前端开发
前端学习案例18-删除两个子节点3
前端学习案例18-删除两个子节点3
23 0
前端学习案例18-删除两个子节点3
|
前端开发
前端学习案例16-删除两个子节点1
前端学习案例16-删除两个子节点1
28 0
前端学习案例16-删除两个子节点1
|
前端开发
前端学习案例17-删除两个子节点2
前端学习案例17-删除两个子节点2
27 0
前端学习案例17-删除两个子节点2
|
前端开发
前端学习案例15-删除两个子节点
前端学习案例15-删除两个子节点
29 0
前端学习案例15-删除两个子节点
|
存储 NoSQL MongoDB
第一个路由节点创建|学习笔记
快速学习第一个路由节点创建
98 0
第一个路由节点创建|学习笔记

热门文章

最新文章