jquery我的其他如果部分不工作......有什么问题?

时间:2012-08-24 05:32:02

标签: javascript jquery

我正在使用jQuery的map函数进行DOM操作。使用这个我试图将一个元素附加到表单。

它只工作一次;这意味着我只在if部分获得结果,我无法从else if部分获得任何值。我的功能出了什么问题,或者我的做法是错误的?

我的数据:

"fields":[
            {
               "id":"firstname",
               "label":"First Name",
               "name":"fname",
               "type":"text",
               "value":""
            },
            {
               "id":"email",
               "label":"Email",
               "name":"email",
               "type":"text",
               "value":""
            },
            {
               "id":"countries",
               "label":"Country",
               "name":"countries",
               "type":"select",
               "options":[
                  {
                     "value":"",
                     "text":"Select Country"
                  },
                  {
                     "value":"in",
                     "text":"India",
                      "selected":"true"
                  },
                  {
                     "value":"us",
                     "text":"United Stated"

                  },
                  {
                     "value":"uk",
                     "text":"United Kingdom"
                  },
                  {
                     "value":"cn",
                     "text":"Canada"
                  }
               ]
            },
            {
               "id":"submit",
               "name":"submit",
               "type":"submit",
               "value":"Submit"
            }
         ] 

我的功能:

    var processModules = function (mData) {
        $.map(mData, function (val,i) {
            $(val.container).append(
                $(val.type === 'content' || val.type === 'navigation' ?
                $('<div />',{
                    'class':val.attributes['class'],
                    id:val.attributes.id})
                .append(val.title ? $('<h2 />',{text:val.title}) : "")
                .append(val.subtitle ? $('<h3>',{text:val.subtitle}) : "")
                :
                val.type === 'form' ? $('<form />',{
                    id:val.attributes.id,
                    'class':val.attributes['class'],
                    action:val.action,
                    name:val.name
                })
                .append($('<legend />',{text:val.title}))
                .append(
                    $.map(val.fields, function (val,i) {
var element;
                        if(val.id) {
                            console.log(val.id); // getting values and appending elements
                        }
                        if (val.label) {
                            element = $('<label />',{text:val.label}); //  am not getting any value here..
                        }
                        if (val.type) {
                            element = $('<input />',{id:val.id}) // I am only getting value here..
                        }
                    } )
                )
                : ""));
        } )
    }

问题是什么?任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

如果之前的if / else if语句不是,则只会调用

else if。例如:

if (true) {
    // This code gets run
}

else if (true) {
    // This code never will
}

考虑到这一点,将if语句更改为如下所示:

if(val.id) {
    console.log(val.id);
}

if (val.label) {
    console.log(val.label);
}

if (val.type) {
    console.log(val.type);
}

答案 1 :(得分:1)

您的代码按预期工作,如果第一个if计算结果为true,则不会访问else部分。一旦if(val.id)返回true,将跳过所有其余的