我试图动态地将参数传递给函数。 我在这个主题上发现了很多关于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>';
}
这是一个错误,它不起作用。
答案 0 :(得分:2)
您的索引器似乎位于错误的位置。因为&#39; model&#39;是数组,你应该索引模型。例如:model[i].link
答案 1 :(得分:2)
由于您在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;
}
&#13;
<ul id="container"></div>
&#13;
但是,如果您希望在用户点击时查找链接,则可以执行此操作。您需要将文字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;
}
&#13;
<ul id="container"></div>
&#13;