javascript - 一个用于多个 div 的 javascript?
问题描述
我有这个 HTML 和一个脚本
/**
* Increment value with random intervals.
* @param {string} id - Id of DOM Element.
* @param {number} start - Start counter value. Applied immediately.
* @param {number} end - End counter value.
* @duration {number} duration - Max duration of one iteration in ms.
*/
function animateValue(id, start, end, duration) {
let current = start;
const obj = document.getElementById(id);
obj.innerHTML = current; // immediately apply start value
const setIncrOut = () => {
let time = Math.random() * 500;
setTimeout(function() {
if (current < end) {
current += 1;
obj.innerHTML = current;
setIncrOut(time)
}
}, time);
}
setIncrOut();
}
animateValue("value", 100, 1000000);
<div id="value">100</div>
基本上我想将这个 1 脚本用于多个 div:
<div id="value2">100</div>
<div id="value3">100</div>
<div id="value4">100</div>
我知道 div id 必须与脚本 id 匹配,是否有解决方法,这样我就不需要复制相同的脚本而只使用一个?
我计划使用其中的 200 多个,所以我认为这是不可行的,仅使用一个会节省大量资源。
编辑:我想我可以使用:
animateValue("value", 100, 1000000);
animateValue("value2", 100, 1000000);
animateValue("value3", 100, 1000000);
但也许有更简单的解决方案?
解决方案
试试这个
使用一个类,因为你使用的是 let,你可以用对象调用
/**
* Increment value with random intervals.
* @param {string} id - Id of DOM Element.
* @param {number} start - Start counter value. Applied immediately.
* @param {number} end - End counter value.
* @duration {number} duration - Max duration of one iteration in ms.
*/
function animateValue(obj, start, end, duration) {
let current = start;
obj.innerHTML = current; // immediately apply start value
const setIncrOut = () => {
let time = Math.random() * 500;
setTimeout(function() {
if (current < end) {
current += 1;
obj.innerHTML = current;
setIncrOut(time)
}
}, time);
}
setIncrOut();
}
document.querySelectorAll(".incr").forEach(obj => animateValue(obj, 100, 1000000));
<div class="incr">100</div>
<div class="incr">100</div>
推荐阅读
- python - 如何从波形和声音设备中保存文件?
- angular - Angular ngx-datatable-footer 如何调用函数
- azure-data-explorer - Kusto 中与静态数组的表条目比较
- c++ - 在 OpenCV (C++) 中应用 4x5 矩阵(而不是 4x4)进行变换
- assembly - 如何通过 BIOS 调用读取多个扇区?
- npm - 当我想安装我的依赖项时出现 Prisma 错误
- kubernetes - Configmap 的初始部署
- javascript - Sequelize Migration 添加数组列
- javascript - 在页面加载时隐藏 div/popup 直到单击按钮
- reactjs - 当我在页面上滚动时如何让我的 DropDownList ant design 组件修复