在forEach循环中获取特定元素

时间:2019-07-27 11:49:18

标签: javascript

我在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 
    // 
  });
});

2 个答案:

答案 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])
  });
});