我有两个json自定义块,一个是自定义的,另一个来自服务器。它的工作方式是,我有一个for循环,它通过静态json运行,并根据其中的内容将窗体html附加到窗口,如果这些值存在于基于第二个json对象的服务器上,它将同时向这些窗体添加值这是从服务器带来的。所以当field.jsonName ==键入它启动另一个if语句,查看json对象的值。如果该对象是== 2,它应该更改该选择框的值。它确实登录了控制台'type = 2'在if语句中被忽略的jQuery。控制台日志显示正在执行if语句
我发现了很多不同的方法来改变选择框的值,我尝试了所有这些我都能想到但我是仍然没有得到我需要的结果。就好像整个陈述由于某种原因而被忽略。我的代码如下
仅供参考这里是代码
// 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当它进入的部分否则,如果field.name =='percent'显示type = 2的值。第二次如预期的那样触发该type = 2。但是没有其他事情发生。
目前尚不清楚你想要什么。你什么时候想要第二个'else if'块执行?如果'jsonName'是'percent',它将永远不会执行。 –
所有那些if else语句看起来像是一个关联数组的完美点。 – tymeJV
基本上我有两块json,一块是自定义的,另一块是从服务器上获取的。它的工作方式是for循环遍历静态json,并根据其中的内容将窗体html附加到窗口,如果这些值存在于基于第二个json对象的服务器上,则同时为这些窗体添加值服务器。所以当field.jsonName ==键入它启动另一个if语句,查看json对象的值。如果该对象是== 2,它应该触发值更改。它会触发console.log('type = 2')部分。 – richbai90