Javascript 通过传递参数更新“[].forEach.call()”内的值

Javascript 通过传递参数更新“[].forEach.call()”内的值,javascript,Javascript,如何摆脱有线[].forEach.call(计数器、函数(计数器){… part或将参数传递给它以更新计数器 代码在[].forEach.call(…中有一个函数,它将新值设置到名为setValue(currentValue);的计数器中。我无法找到访问setValue()并传递新参数的方法 我想使用普通函数通过传递参数来更新值,如下所示: function update(newValue){ // everything goes here }; 下面是原始代码(当然,您只需要修改JS!),在

如何摆脱有线
[].forEach.call(计数器、函数(计数器){…
part或将参数传递给它以更新计数器

代码在
[].forEach.call(…
中有一个函数,它将新值设置到名为
setValue(currentValue);
的计数器中。我无法找到访问
setValue()
并传递新参数的方法

我想使用普通函数通过传递参数来更新值,如下所示:

function update(newValue){
// everything goes here
};
下面是原始代码(当然,您只需要修改JS!),在这段代码中,我使用setTimeout来更新计数器:

let counters=document.getElementsByClassName('number-ticker');
让defaultDigitNode=document.createElement('div');
defaultDigitNode.classList.add('digit');
for(设i=0;i<11;i++){
defaultDigitNode.innerHTML+=i+'
'; } []forEach.call(计数器、函数(计数器){ 设d=defaultDigitNode.cloneNode(true); 让数字=计数器。追加子项(d); 让currentValue=10;//设置初始值 设置值(当前值); //更新值 setTimeout(函数(){ 设定值(9); }, 1000) 函数设置值(数字){ digit.style.marginTop='-'+数字+em'; } });
:根目录{
背景色:#555;
颜色:白色;
字体大小:25vh;
字体系列:Roboto Light;
}
身体,
html{
保证金:0;
身高:100%;
}
.集装箱{
显示器:flex;
证明内容:中心;
对齐项目:居中;
身高:100%;
}
.数字自动售票机{
溢出:隐藏;
高度:1米;
背景色:#333;
盒影:0.05em黑色镶嵌;
}
.数字滴答器.数字{
浮动:左;
线高:1;
过渡:利润率最高1.75秒;
右边框:1px实心#555;
填充:0.075em;
文本对齐:居中;
}

数字记录器

我认为您的解决方案设计过度,以下是我的建议:

我正在使用Array.from和Array.keys生成一个数组,并对其执行
for
循环。在我的
for
循环中,我正在运行
setTimeout
来更新我的计数器

函数设置值(数字){
让digit=document.getElementsByCassName('digit')[0];
digit.innerHTML=数字;
}
常数currentValue=10;
数组.from(数组(currentValue).keys()).reverse().forEach(函数(编号,索引){
setTimeout(函数(){
设置值(数字+1,索引);
},指数*1000);
});
:根目录{
背景色:#555;
颜色:白色;
字体大小:25vh;
字体系列:Roboto Light;
}
身体,
html{
保证金:0;
身高:100%;
}
.集装箱{
显示器:flex;
证明内容:中心;
对齐项目:居中;
身高:100%;
}
.数字自动售票机{
溢出:隐藏;
高度:1米;
背景色:#333;
盒影:0.05em黑色镶嵌;
}
.数字滴答器.数字{
浮动:左;
线高:1;
过渡:利润率最高1.75秒;
右边框:1px实心#555;
填充:0.075em;
文本对齐:居中;
}

数字记录器

你能解释一下你想用
[].forEach.call实现什么吗?
我希望你能告诉我:)据我所知,调用
Array.prototype.forEach.call
是一种更简单的方法,它将
计数器
作为值传递给
forEach
函数。之所以这样做,是因为
getElementsByClassName
本身没有
forEach
方法,但会使用它。这是什么问题就在这里?有点unclear@adiga我们只能在代码中的
[].forEach.call()
内部更新并将参数传递给
setValue
。如果我们想在
[].forEach.call()
外部更新
setValue
,那该怎么办呢?谢谢你的回答……但是那些动画和东西呢。。。