如何解决这个最小的js代码问题?

时间:2011-03-22 20:28:06

标签: javascript

我的输入是:一组对象名称和对象。我想循环遍历对象名称的数组,然后从相应的对象输出一些东西。我的代码如下:

    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

3 个答案:

答案 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];

声明bolditalic 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 />")
}

示例:http://jsfiddle.net/sea2d/

如果您想提醒您的操作,可以使用:

alert(options["bold"]["action"]);