在运行时将参数传递给函数

时间:2015-05-20 20:08:32

标签: javascript

我试图动态地将参数传递给函数。 我在这个主题上发现了很多关于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>';
} 

这是一个错误,它不起作用。

2 个答案:

答案 0 :(得分:2)

您的索引器似乎位于错误的位置。因为&#39; model&#39;是数组,你应该索引模型。例如:model[i].link

答案 1 :(得分:2)

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

&#13;
&#13;
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;
}
&#13;
<ul id="container"></div>
&#13;
&#13;
&#13;

但是,如果您希望在用户点击时查找链接,则可以执行此操作。您需要将文字model[i]放在onclick属性中,而不是函数。

&#13;
&#13;
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;
}
&#13;
<ul id="container"></div>
&#13;
&#13;
&#13;