0

我有两个 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 if field.name == 'percent' 时显示 type = 2 的值。第二个按预期触发,说明 type = 2。但没有其他任何事情发生。

4

2 回答 2

0

你的代码不是很清楚,你想要完成什么也不是很明显。但是您可以通过执行以下操作显着降低代码中的复杂性(和错误的可能性):

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

    if(type < 5) {
        $("#QuizType").val(type);
    } else {
        $("#QuizType").val(5);
    }
}
于 2013-07-16T17:02:11.147 回答
0

抱歉,这是一个糟糕的问题,更多的调试表明在执行我的代码时 quizType 不存在。不知道为什么,但这是一个开始。

于 2013-07-16T17:36:10.670 回答