我有两个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.但是没有其他事情发生。
答案 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不存在。不知道为什么,但这是一个开始。