***.forEach is not a function

缘起:

	<div id="box">
		<p>city</p>
		<ul id="city">
			<li id="bj">我是第1个孙子</li>
			<li>我是第2个孙子</li>
			<li>我是第3个孙子</li>
			<li>我是第4个孙子</li>
		</ul>
	</div>
	<div id="box_btn">
		<button class="button" id="btn1">获取city所有子节点</button>
		<button class="button" id="btn2">11</button>
		<button class="button" id="btn3">aniu3</button>
	</div>
	
	<script type="text/javascript">
		var btn1 = document.getElementById("btn1");
		btn1.onclick = function(){
			var city = document.getElementById("city");
			var ci2 = city.childNodes;
			var ci = city.children;
			//手贱:用了forEach()
			ci2.forEach(function(a){
				alert(a.innerHTML);
			});
			ci.forEach(function(a){
				alert(a.innerHTML);
			});
error:
	元素子节点.html:60 Uncaught TypeError: ci.forEach is not a function
    at HTMLButtonElement.btn1.onclick (元素子节点.html:60)

在这里插入图片描述
原生js获取的DOM集合是一个类数组对象,不能直接利用数组的方法
(例如:forEach,map等),需要进行转换为数组后,才能用数组的方法!

1.推荐几种转换成数组的方法

1.1 Array.from()

let lis = Array.from(ci);

1.2 […ci]

let lis = [...ci];

1.3 Array.prototype.slice.call(ci)

let lis = Array.prototype.slice.call(ci);
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值