【发布时间】:2018-06-17 13:37:13
【问题描述】:
我经历了所有“循环触发一次”的问题,但找不到我的问题的解决方案。
我正在做一个需要大量循环函数的项目,以元素为主题。我想我会创建一个库函数(我认为'primer function'是一个更好的术语),以后每次只需一行代码就可以调用它。所以我尝试了,但它的行为不像我预期的那样,因为它只触发一次。这是我的实验代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<span class="demo">See me.</span>
<span class="demo">See me.</span>
<span class="demo">See me.</span>
<span class="demo">See me.</span>
<script>
var forAll = function(elems) {
for (var i=0, n=elems.length; i<n; i++) {
console.log('The elems[i] == ' + elems[i]);
return elems[i];
}
}
var demos = document.querySelectorAll('.demo');
forAll(demos).style.color = 'red';
console.log('The forAll(demos) ==' + forAll(demos));
</script>
</body>
</html>
从结果和控制台可以看出,primer 函数只触发一次。我究竟做错了什么?我完全自学了 Javascript,所以如果我缺少基本的东西,请放轻松。
补充:在这种情况下,IE11 是一个常用的浏览器,所以forEach 不是一个选项。
【问题讨论】:
-
您希望该函数能做什么?您调用它的方式似乎应该返回单个 DOM 元素引用,因为您取消引用返回值的“样式”属性。在这种情况下,循环实际上并没有任何意义,正如所写的那样。如果意图以某种方式过滤元素列表以找到特定的元素,这可能是有意义的。
-
我希望该函数将所有跨度文本变为红色。
标签: javascript html loops foreach