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

子节点数组不具有数组的特性?,如arr.shift()这个方法?

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>无标题文档</title>

</head>


<body>

<div id="content">

  <h1>html</h1>

  <h1>php</h1>

  <h1>javascript</h1>

  <h1>jquery</h1>

  <h1>java</h1>

</div>


<script type="text/javascript">

function clearText() {

  var content=document.getElementById("content");

  var otest=content.childNodes;

  //var n=otest.length;

    //for(i=0;i<n;i++){

    //实现点击一次,只删除一个节点的效果

    if(otest[0].nodeType==1){

      content.removeChild(otest[0])   

    }else{

      otest.shift();//这个方法不行,是不是意味着子节点数组不具有数组的特性?,如arr.shift()这个方法?

      content.removeChild(otest[0]);

    

    }

     

    //document.write(renode.innerHTML+"<br>");

    //}

  

}

</script>


<button onclick="clearText()">清除节点内容</button>




</body>

</html>


正在回答

5 回答

我觉得可以这么理解。更准确的说它和数组碰巧都有length属性,而不是说集合有数组的length属性。var str="test";test.length==4. 你看,字符串也有length属性,字符串并不是数组,length属性也不是数组独有的。

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

Dberglas 提问者

这样比较好理解
2016-07-21 回复 有任何疑惑可以回复我~

你看看你分号是不是打错了要在英文状态下打js

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

这是Chrome debug tool 的运行结果,相信看了你就明白了:

var div=document.getElementById("container")
var children=div.childNodes
/*以下代码表明children 对象的构造函数是NodeList,而arr对象的构造函数是Array。
也就是说arr是数组而children不是*/
children.constructor
NodeList() { [native code] }
var arr=[1,1,1]
arr.constructor
Array() { [native code] }

如果你要删除children的第一个对象,直接children[0].remove() 即可

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

Dberglas 提问者

它是一个集合,具有数组的个别特性,但不是数组,是这样吗
2016-07-18 回复 有任何疑惑可以回复我~

你可以用console.log()这个函数打印出来,在控制台查看其结构合数组有什么不同

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

childNodes 属性,标准的,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本,它并不是数组


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

举报

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

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

进入课程

子节点数组不具有数组的特性?,如arr.shift()这个方法?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信