我在forEach循环中有一个选择元素列表,并且只希望索引为0的第一个元素。
该元素将具有不同的方法,我试图防止重复的代码,我不想仅为该单个元素创建另一个方法,我试图弄清楚,但似乎我没有成功。
var listOfSelect = document.querySelectorAll('select');
listOfSelect.forEach(function(element) {
element.addEventListener('focus', function () {
element.style.backgroundColor = "white";
});
element.addEventListener('blur', function () {
element.style.backgroundColor = "#F0F0E7";
});
element.addEventListener('change', function () { // I would want to get the first element here
//
});
});
答案 0 :(得分:2)
您可以访问index
作为forEach
方法的第二个参数,例如下面的
var listOfSelect = document.querySelectorAll('select');
listOfSelect.forEach(function(element, index) {
...
element.addEventListener('change', function () {
// I would want to get the first element here
if (index === 0) {
console.log('hi')
}
});
});
答案 1 :(得分:1)
forEach
具有以下语法
nodeList.forEach(callback(currentValue [, index [, array]])[, thisArg]);
因此您可以使用
var listOfSelect = document.querySelectorAll('select');
listOfSelect.forEach(function(element,index,array) {
element.addEventListener('focus', function () {
element.style.backgroundColor = "white";
});
element.addEventListener('blur', function () {
element.style.backgroundColor = "#F0F0E7";
});
element.addEventListener('change', function () {
console.log(array[0])
});
});