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

Chrome59到底支不支持forEach函数?

/ 猿问

Chrome59到底支不支持forEach函数?

慕标6419154 2017-06-21 13:49:45

<!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>


查看完整描述

23 回答

已采纳
?
李晓健
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);});
}



如果你的问题已解决,请记得采纳答案!

查看完整回答
25 反对 回复 2017-06-21
点击展开后面11
?
小王子抓猫咪

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

Array.prototype.forEach.call(hobby,function(element,index){ ... });


查看完整回答
12 反对 回复 2017-07-27
?
橋本奈奈未

那么我也补充一种代码更少的写法吧。

[].forEach.call(hobby,function(v){
    //TODO
})


查看完整回答
10 反对 回复 2017-08-05
点击展开后面5
?
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......


查看完整回答
6 反对 回复 2017-06-21
?
Keyro

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

查看完整回答
2 反对 回复 2018-05-02
?
小熊上大二啦

Array.from(hobby).foreach

查看完整回答
2 反对 回复 2017-11-04
?
安九思米大
console.log("1");


查看完整回答
1 反对 回复 2019-06-03
?
码男

应该支持吧

查看完整回答
1 反对 回复 2019-04-18
?
Developer_Zuck

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

查看完整回答
1 反对 回复 2017-10-04
?
属于码农的生活

input 里面的value值呢

查看完整回答
1 反对 回复 2017-09-11
?
杨少峰

这样吧:

// 模拟Array.forEach

Array.prototype.ForEach = function ( func ) {

    for ( let i = 0; i<this.length; i++ ) {

        func(this[i],i);

    }

}



查看完整回答
2 反对 回复 2017-08-21
?
fdsgasgg
[...hobby].forEach(****)


查看完整回答
1 反对 回复 2017-08-16
?
咿呀咿呀哒哒

可以用each

查看完整回答
反对 回复 5天前
?
慕田峪1405336

对  不支持

查看完整回答
反对 回复 2019-08-09
?
莲_蓶濏__

<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方法添加上去 或者你也可以用call

es5

[].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>


查看完整回答
反对 回复 2019-05-18
?
慕娘034580

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

查看完整回答
反对 回复 2019-05-04
?
胸怀大志梦在我心
Object.keys(array).forEach(value=> {
    //逻辑代码
})


查看完整回答
反对 回复 2019-04-16
?
weixin_慕神8441822

小阔耐鸭~~~~~~

查看完整回答
反对 回复 2018-12-18
?
qq_慕盖茨4455189

到can i use网站去查询

查看完整回答
反对 回复 2018-11-23
?
qq_诚实可靠小郎君_0

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

查看完整回答
反对 回复 2018-11-07
首页上一页12下一页尾页

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信