javascript - 如何将一项功能分配给集合中的所有项目?

标签 javascript setinterval

如何将一个函数分配给集合中的所有项目?

我有一个 setInterval 函数,我想将它分配给集合中的所有 HTML 元素

document.addEventListener("DOMContentLoaded", function() {
  // THIS IS MY FUNCTION
  var interval = setInterval(function() {
    var number = parseInt(this.innerText, 10);
    number++;
    this.innerText = number;
  }, 1000);

  // this is my attempt TO assign one function to all items in the collection
  var counter = document.querySelectorAll('.counter');

  for (var i = 0; i < counter.length; i++) {
    counter[i].addEventListener("DOMContentLoaded", interval);
  }
});
<div class="counter" data-number="100">0</div>
<div class="counter" data-number="500">0</div>
<div class="counter" data-number="600">0</div>

我希望每个具有“.counter”类的 html 元素都有自己的名为“interval”的函数

最佳答案

您需要为该函数创建一个引用,window.setInterval 仅返回一个数字 ID,以便可能清除计时器。

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval

document.addEventListener("DOMContentLoaded", function() {

  var fn = function() {
    setInterval(() => {
      var number = parseInt(this.innerHTML, 10);
       number++;
       this.innerHTML= number;
    }, 1000);
   }

  var counter = document.querySelectorAll('.counter');
  
  for (var i = 0; i < counter.length; i++) {
    fn.call(counter[i]);
  }
});
<div class="counter" data-number="100">0</div>
<div class="counter" data-number="500">0</div>
<div class="counter" data-number="600">0</div>

关于javascript - 如何将一项功能分配给集合中的所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57274555/

相关文章:

javascript - 如何使用 jQuery 复制 excel 样式的表格单元格?

javascript - 使用 setInterval 制作图像轮播

javascript - 使用 setInterval 每 60 秒保存一次表单不起作用

javascript - 如何使用setInterval或setTimeOut同步执行?

javascript - each() 循环使用随机 setInterval

javascript - jQuery ajax 调用变量

javascript - getImageData 导致 "Uncaught Error: NOT_SUPPORTED_ERR: DOM Exception 9"

JavaScript++ 运算符无法正常工作

javascript - 使用 setInterval 替换来自 api 的文本

javascript - 执行插入 .innerHTML 的 src 脚本