【发布时间】:2018-07-13 05:02:03
【问题描述】:
我正在尝试将 jQuery each() 函数转换为 vanilla javascript,而且我快到了,但我似乎无法找到一种将同一元素的多个实例存储在要添加的变量中的方法到我的数组,然后用替换each() 的for loop 进行迭代。
我遇到的问题是获取“arr”数组中的元素来表示元素的每个实例。
** 请注意,我已将原始简化的 each() 循环注释掉,但如果您取消注释,您将看到会发生什么。
Codepen:https://codepen.io/emilychews/pen/aqdWzp
JS
// // ---------- EACH LOOP ON TEXT ELEMENTS
// $('div, h1').each(function(){
// var myElement = this;
// myElement.style.cssText = "background: red; transition: 1s"
// });
// // ---------- VANILLA JS
var div = document.getElementsByTagName("div")[0];
var h1 = document.getElementsByTagName("h1")[0];
var arr = [div, h1];
for (i = 0; i < arr.length; i++) {
var myElement = arr[i];
arr[i] = this;
myElement.style.cssText = "background: red; transition: 1s"
}
CSS
body {display: flex; margin: 20px; padding: 0; flex-direction: column; align-items: center; justify-content: center;}
div {
width: 200px;
height: 100px;
background: blue;
}
h1 {
color: white;
background: blue;
width: 200px;
}
HTML
<div></div>
<div></div>
<h1>a heading</h1>
【问题讨论】:
-
那行有什么用?
arr[i] = this; -
为什么
[0]在document.getElementsByTagName("...")[0]中? -
您可能正在寻找
document.querySelectorAll("div, h1") -
@LioraHaydont 我需要引用“this”,因为元素将自动触发 scrollMagic 函数。
-
@Andreas [0] 是为了阻止它在我解释问题时抛出错误。
标签: javascript jquery arrays each