猿问
下载APP

Chrome59到底支不支持forEach函数?

<!DOCTYPE HTML>

<html>

<head>

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

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

</head>    

<body>

<form>

请选择你爱好:<br>

<input type="checkbox" name="hobby" id="hobby1">  音乐

<input type="checkbox" name="hobby" id="hobby2">  登山

<input type="checkbox" name="hobby" id="hobby3">  游泳

<input type="checkbox" name="hobby" id="hobby4">  阅读

<input type="checkbox" name="hobby" id="hobby5">  打球

<input type="checkbox" name="hobby" id="hobby6">  跑步 <br>

<input type="button" value = "全选" onclick = "checkall();">

</form>

<script type="text/javascript">

function checkall(){

var hobby = document.getElementsByTagName("input");

hobby.forEach(function(v){v.checked=true;}); //为什么chrome这句报函数forEach不存在?

[1,2,3].forEach(function(v){alert(v);});//而这句就不报错呢?

}

</script>

</body>

</html>


慕标6419154
浏览 11192回答 21
21回答

李晓健

function checkall(){     //hobby 并不是一个真正的数组,但他有length属性,所以可以用for循环,forEach是直正数组的方法,所以hobby不能直接用forEach     var hobby = document.getElementsByTagName("input");     //把hobby转成一个真正的数组,就可以用forEach了     var hobbyArr = Array.prototype.slice.call(hobby);     hobbyArr.forEach(function(v){v.checked=true;});      [1,2,3].forEach(function(v){alert(v);}); }如果你的问题已解决,请记得采纳答案!

小王子抓猫咪

楼上二位回答的挺好,我补充一句,其实没有必要用slice方法转换。完全可以用call语法将数组的forEach运用到hobby这个类数组上。Array.prototype.forEach.call(hobby,function(element,index){ ... });

橋本奈奈未

那么我也补充一种代码更少的写法吧。[].forEach.call(hobby,function(v){     //TODO })

Caballarii

hobby的类型是HTMLCollection,不是js里的Array,两者是有区别的,在Chrome的F12里console.log(hobby)可以看到hobby的类型。Array.prototype.slice.call可以进行转化,var hobbyArr=Array.prototype.slice.call(hobby,0); hobbyArr.forEach......

Keyro

支不支持自己在chrome59控制台试试就知道了,或者到can i use网站去查询

小熊上大二啦

Array.from(hobby).foreach

安九思米大

console.log("1");

码男

应该支持吧

Developer_Zuck

要用foreach需要引入c标签啊。

属于码农的生活

input 里面的value值呢

杨少峰

这样吧: // 模拟Array.forEach Array.prototype.ForEach = function ( func ) {     for ( let i = 0; i<this.length; i++ ) {         func(this[i],i);     } }

fdsgasgg

[...hobby].forEach(****)

莲_蓶濏__

<div class="box">html</div><div class="box">css</div><div class="box">javascript</div><script>/* 因为那是数组的方法啊 你用document.getElementsByTagName()查找的是类数组 并不是真正的数组 并没forEach这方法 */Object.prototype.forEach = [].forEach; /* 不过你想这么玩也不是不行 给对象原型添加forEach再把数组的forEach方法添加上去 或者你也可以用calles5[].forEach.call(document.getElementsByTagName('div'), function(e) { console.log(e.textContent);});es6[...document.getElementsByTagName('div')].forEach(e => console.log(e.textContent));*/document.getElementsByTagName('div').forEach(function(e) { console.log(e.textContent);});</script>

慕娘034580

http://www.boobuo.com/forum.php?mod=viewthread&tid=396&extra=

胸怀大志梦在我心

Object.keys(array).forEach(value=> {     //逻辑代码 })

weixin_慕神8441822

小阔耐鸭~~~~~~

qq_慕盖茨4455189

到can i use网站去查询

qq_诚实可靠小郎君_0

这个问题请大牛回答下吧!

qq_诚实可靠小郎君_0

111

慕的地8195867

这个方式是什么
点击加载更多
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答