繁体   English   中英

JavaScript 参数 function 调用未知数量的参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM