如何在JavaScript中将外部函数设置为函数的参数?

时间:2018-02-25 20:09:20

标签: javascript



var element;

function getElement(elem, functionToCall) {
  if (elem.length === undefined) {
    elem = [elem]
  };
  element = elem;
  for (var i = 0; i < element.length; i++) {
    functionToCall
  }
};

function changeElementStyle() {
  element[i].style.color = "red"
}
getElement(document.querySelectorAll("p"), changeElementStyle);
&#13;
&#13;
&#13;

这是我的代码,但它不起作用。我想要的是,能够在函数(changeElementStyle)的参数中设置函数(getElement),其中(changeElementStyle)在函数之外({ {1}})。我需要在getElement之外声明外部函数的原因是getElement()每次调用时都会更改其他样式。 我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

声明没有该var声明的函数w

function w(i) {
    a[i].style.color = "red"
}

传递函数如下:

x(document.querySelectorAll("p"), w);

要调用函数w,您需要执行该函数,因为您可以看到该函数现在收到一个索引,以便能够获取特定元素p

for (var i = 0; i < a.length; i++) {
  z(i); // Here
}

&#13;
&#13;
var a;

function x(y, z) {
  if (y.length === undefined) {
    y = [y]
  };
  a = y;
  for (var i = 0; i < a.length; i++) {
    z(i);
  }
};

function w(i) {
  a[i].style.color = "red"
}

x(document.querySelectorAll("p"), w);
&#13;
<p>Hello</p>
<p>World!</p>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

通过这种方式调用闭包:

function myFunc(a){
  a();
}

并记住关闭,您不需要定义名称。 你可以定义一个闭包并像这样传递它

f = function(){
  console.log('closure');
}
myFunc(f)