2

我正在尝试使用问题列表和单选按钮填充表单。加载页面时,我有一个变量,其中包含他们迄今为止的答案,作为 JSON 格式的字符串:

var json = '{ "answers" : [{"84" : "Y" },{"85" : "Y" },{"86" : "Y" },{"87" : "Y" },{"88" : "Y" },{"89" : "N" },{"90" : "N" },{"91" : "N" },{"92" : "Y" },{"93" : "N" },{"94" : "Y" },{"95" : "N" },{"96" : "N" },{"97" : "Y" }]}';

我需要遍历答案并找到 ID 与数字 IE id="84" 匹配的单选按钮,并根据相应的值 (Y) 设置它的值。

似乎 getJSON 是我应该看的,但我不需要调用来获取数据,因为我已经有了它。

4

3 回答 3

4

您可以删除外面的引号,它已经是正确的格式。

var json = {
                "answers" : [{"84" : "Y" },
                 {"85" : "Y" },
                 {"86" : "Y" },
                 {"87" : "Y" },
                 {"88" : "Y" },
                 {"89" : "N" },
                 {"90" : "N" },
                 {"91" : "N" },
                 {"92" : "Y" },
                 {"93" : "N" },
                 {"94" : "Y" },
                 {"95" : "N" },
                 {"96" : "N" },
                 {"97" : "Y" }
            ]
        };

与其他一些格式不同,JSON 是基于实际语言的,这意味着您可以在常规编码中使用 JSON 格式。编写 JSON 相当容易。

于 2009-08-06T13:40:38.830 回答
0

通常你只需要使用如下的 each 语句:

 jQuery.each(json.answers, function(i, val) {
   $("#" + i).val() = val;
 });
于 2009-08-06T14:24:01.740 回答
0

明白了,删除上面提到的引号添加了一个与 ID 匹配的类,这样我就可以选择给定 ID 的所有元素:

 for(var i =0; i < json.answers.length; i++) { 
           var item = json.answers[i]; 
           for (var j in item) {
              $('.' + j).each(function(){
                 if ($(this).attr("value") == item[j]) $(this).attr("checked", true);
              });
     }
 }

我确信可能有一个更优雅的解决方案,但到目前为止效果很好。

于 2009-08-06T14:24:43.893 回答