在if语句中忽略jQuery。控制台日志显示正在执行if语句

时间:2013-07-16 16:53:34

标签: jquery json for-loop

我有两个json的块,一个是自定义的,另一个是从服务器带来的。它的工作方式是我有一个for循环,它运行通过静态json并根据其中的内容将表单html附加到窗口,如果服务器上存在基于第二个json对象的值,它会同时向这些表单添加值从服务器带来的。因此,当field.jsonName == type时,它会启动另一个查看值json对象的if语句。如果该对象是== 2,则应更改该选择框的值。它会登录控制台'type = 2'

我已经找到了很多关于改变选择框值的不同方法的信息,我已经尝试了所有我能想到的但是我仍然没有得到我需要的结果。就好像整个语句由于某种原因被忽略了。我的代码在

之下

此处参考是代码的较大部分

        // Add default Fields to Fieldset
        addDefaultFields: function(fieldset) {
            for (f in defaults.fields) {
                // get field info - if quizJSON exists, use quizJSON data
                field     = defaults.fields[f];
                inputName = field.q.replace(/\W/g,'');
                required  = field.required ? defaults.requiredString : '';
                nameAndId = 'name="' + inputName + '" id="' + inputName + '"';
                option1 = '<option value=' +field.value1+ '>' + field.option1 + '</option>';
                option2 = '<option value=' +field.value2+ '>' + field.option2 + '</option>';
                option3 = '<option value=' +field.value3+ '>' + field.option3 + '</option>';
                option4 = '<option value=' +field.value4+ '>' + field.option4 + '</option>';
                option5 = '<option value=' +field.value5+ '>' + field.option5 + '</option>';
                option6 = '<option value=' +field.value6+ '>' + field.option6 + '</option>';

                if (quizValues != null) {

                    //Prevent Passing score from resetting when editing a quiz

                    if (field.jsonName == 'percent'){
                        value = plugin.formHelper.htmlspecialchars(quizValues.info[field.jsonName] * 100);
                    } else if (field.jsonName == 'type') { console.log(quizValues.info.type);
                        if(quizValues.info.type == '0') {
                            $("#QuizType").val('0');
                        } else if (quizValues.info.type == '1') {
                            $("#QuizType").val('1');
                        } else if (quizValues.info.type == '2') {
                            $("#QuizType").val('2'); console.log('type = 2');
                        } else if (quizValues.info.type == '3') {
                            $("#QuizType").val('3');
                        } else if (quizValues.info.type == '4') {
                            $("#QuizType").val('4');
                        } else  {
                            $("#QuizType").val('5');
                        }
                    }

                    else{

                        value = plugin.formHelper.htmlspecialchars(quizValues.info[field.jsonName]); }
                } else {
                    value = '';
                }

这是我正在努力的部分

 else if (field.jsonName == 'type') { console.log(quizValues.info.type);
                        if(quizValues.info.type == '0') {
                            $("#QuizType").val('0');
                        } else if (quizValues.info.type == '1') {
                            $("#QuizType").val('1');
                        } else if (quizValues.info.type == '2') {
                            $("#QuizType").val('2'); console.log('type = 2');
                        } else if (quizValues.info.type == '3') {
                            $("#QuizType").val('3');
                        } else if (quizValues.info.type == '4') {
                            $("#QuizType").val('4');
                        } else  {
                            $("#QuizType").val('5');
                        }
                    }

当第一个console.log进入else时,如果field.name =='percent'显示type = 2的值。第二个按预期激发,表明type = 2.但是没有其他事情发生。

2 个答案:

答案 0 :(得分:0)

你的代码不是很清楚,而且你想要完成的是什么并不是很明显。但是,通过这样做,您可以显着降低代码的复杂性(以及错误的可能性):

else if(field.jsonName === "type") {
    var type = parseInt(quizValues.info.type, 10);

    if(type < 5) {
        $("#QuizType").val(type);
    } else {
        $("#QuizType").val(5);
    }
}

答案 1 :(得分:0)

很抱歉这是一个糟糕的问题,稍微调试一下就会发现我的代码执行时quizType不存在。不知道为什么,但这是一个开始。