![](/img/trans.png)
[英]How to pop unknown argument, then call another function with the rest of unknown arguments
[英]JavaScript argument function call with unknown amount of argumnts
我正在尝试创建一个 function 循环遍历元素并为每个 class 调用不同数量的 function
也许我可以以某种方式绑定它们? 显然这段代码不起作用,所以仅供参考:
function elementsLoop(className, fn, ...args) {
let elems = document.getElementsByClassName(className);
for(const elem of elems) {
fn(elem, ...args);
}
}
let a = (elem, x, y, z) => {
//do something with 'elem' and x y ,z
}
let b = (elem) => {
//do something with 'elem'
}
let c = (elem, t) => {
//do something with 'elem' and t
}
elementsLoop('some-class', a, [x,y,z]);
elementsLoop('some-class', b, []);
elementsLoop('some-class', c, [t]);
这是我最初的方法,我只是想知道如何以不同的方式做:
let getElements = (className) => {
return document.getElementsByClassName(className);
}
function a(className, x, y, z) {
let elems = getElements(className);
for(const el of elems){
//do something
}
}
当 function 定义如下: function fun(...abc) {}
,它被称为: fun(1, 2, 3)
。
function elementsLoop(className, fn, ...args){
let elems = document.getElementsByClassName(className);
for(const elem of elems){
fn(elem, ...args);
}
}
let a = (elem, x, y, z) => {
//do something with 'elem' and x y ,z
}
let b = (elem) => {
//do something with 'elem'
}
let c = (elem, t) => {
//do something with 'elem' and t
}
elementsLoop('some-class', a, x, y, z);
elementsLoop('some-class', b);
elementsLoop('some-class', c, t);
使用.apply
将数组作为参数列表传递。
fn.apply(null, [elem , ...args]);
此外,您可能希望将 function 调用更改为:
elementsLoop('some-class' , a , x, y, z);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.