我有一个JavaScript数组,其中包含要检查的无线电的名称和值。

jQuery(window).load(function(){

var selected_options = new Array();
selected_options['swing_type'] = 'Slide';

    var x;
    for (x in selected_options){
        jQuery("#menu input[name="+ x +"][value="+ selected_options[x] +"]").attr('checked', 'checked');
    }
});


而html具有以下内容:

<td>
    <input type="radio" id="swing" name="swing_type" value="Swing" /><label for="swing"> Swing</label><br />

    <input type="radio" id="slide" name="swing_type" value="Slide" /><label for="slide"> Slide</label>
  </td>


当我运行此脚本时,浏览器无响应。我尝试了几种变体,以下两种有效:

 jQuery("#menu input[value="+ selected_options[x] +"]").attr('checked', 'checked');
jQuery("#menu input[name=swing_type][value=Swing]").attr('checked', 'checked');


以下无效:

jQuery("#menu input[name=swing_type][value="+ selected_options[x] +"]").attr('checked', 'checked');


我希望有人能启发我什么地方出了问题。我想定位正确的无线电输入。如果仅将值作为目标,则可能会出现两种情况,其中可能存在两个分别为“是/否”值的集合。谢谢。

最佳答案

您正在为数组做一个for / in。这有时会引起问题。

由于指定的是命名键,因此应改用一个对象:

var selected_options = {};


要么

var selected_options = new Object();


测试示例:http://jsfiddle.net/Ds3s8/

10-08 02:55