我的输入是:一组对象名称和对象。我想循环遍历对象名称的数组,然后从相应的对象输出一些东西。我的代码如下:
options=["bold","italic"] ;
var bold ={
action: function(){
alert("<strong>just bold</strong>");
},
b_p: "-40px bold"
};
var italic ={
action: function(){
alert("<em>an italic</em>");
},
b_p: "-20px italic"
};
for(i=0;i<options.length;++i)
{
document.write(options[i].b_p);
}
我想要的输出:“ - 40px bold -20px italic”但是我收到一条错误说:“undefined undefined”。
请帮助我在这里找出我的错误/无知。
感谢。
/ * ** * ** / 更新:问题解决如下:-)谢谢communtiy
答案 0 :(得分:3)
传递对象数组,而不是传递名称:
var bold = {
action: function(){
alert("<strong>just bold</strong>");
},
b_p: "-40px bold"
};
var italic = {
action: function(){
alert("<em>an italic</em>");
},
b_p: "-20px italic"
};
var options = [ bold, italic ]; // symbols, not strings
for(var i=0;i<options.length;++i)
{
document.write(options[i].b_p);
}
其他任何东西都不需要改变。
答案 1 :(得分:2)
这里有一些问题:
options=["bold","italic"] ;
应为options=[bold,italic];
并在声明bold
和italic
vars之后
另外,for(i=0;i<options.length;++i)
应为for(i=0;i<options.length;i++)
(请注意后增量而非预增量)
总结一下:
var bold ={
action: function(){
alert("<strong>just bold</strong>");
},
b_p: "-40px bold"
};
var italic ={
action: function(){
alert("<em>an italic</em>");
},
b_p: "-20px italic"
};
var options=[bold,italic];
for(i=0;i<options.length;i++)
{
document.write(options[i].b_p);
}
答案 2 :(得分:0)
这是一种更清洁的方法:
var options = {
"bold": {
"action": "<strong>just bold</strong>",
"b_p": "-40px bold"
},
"italic": {
"action": "<em>an italic</em>",
"b_p": "-20px italic"
}
};
for (var i in options) {
document.write(options[i]["b_p"] + "<br />")
}
如果您想提醒您的操作,可以使用:
alert(options["bold"]["action"]);