在运行时向函数传递参数

Passing arguments to a function at run-time

本文关键字:参数 函数 运行时      更新时间:2023-09-26

我试图动态地将参数传递给函数。我在这个话题上发现了很多关于SO的问题,但在某个地方我没有得到它。

我的问题与这个场景非常相似。我使用方括号函数名和参数,但我不确定我错在哪里。

如果有人能给我指一份关于这方面的好的文档就太好了。

function myage(age) {
    alert("My age is " + age + "!!");
}
model = [{
    name : "Tom",
    age : 30,
    link : myage
},
{
    name : "James",
    age : 32,
    link : myage
}];
var elem;
for(var i = 0; i < model.length ; i++) {
    elem = '<li><a href="#" onclick=[' + model[i].link + '][' + model[i].age + ']>' + model[i].name + '</a></li>';
} 

这是一个错误,不能工作

由于您在onclick属性中构造字符串,因此link属性应该是函数的名称,而不是函数本身。然后你应该把参数放在后面的圆括号里,而不是方括号里。

function myage(age) {
  alert("My age is " + age + "!!");
}
model = [{
  name: "Tom",
  age: "thirty",
  link: "myage"
}, {
  name: "James",
  age: 32,
  link: "myage"
}];
var elem;
for (var i = 0; i < model.length; i++) {
  elem = '<li><a href="#" onclick="' + model[i].link + '(''' + model[i].age + ''')">' + model[i].name + '</a></li>';
  document.getElementById("container").innerHTML += elem;
}
<ul id="container"></div>

但是,如果您希望它在用户单击时查找链接,您可以这样做。您需要将文字model[i]放在onclick属性中,而不是函数中。

function myage(age) {
    alert("My age is " + age + "!!");
}
model = [{
    name : "Tom",
    age : 30,
    link : myage
},
{
    name : "James",
    age : "thirty-two",
    link : myage
}];
var elem;
for(var i = 0; i < model.length ; i++) {
    elem = '<li><a href="#" onclick="model[' + i + '].link(''' + model[i].age + ''')">' + model[i].name + '</a></li>';
    document.getElementById("container").innerHTML += elem;
}
<ul id="container"></div>

看来你把索引器放错地方了。因为'model'是数组,你应该索引model。例如:model[i].link