将所选选项设置为多个选择jquery

时间:2014-08-04 14:19:03

标签: javascript jquery select option

大家好,我的示例代码:

HTML

<select id="dropdownA">
    <option val="1">1</option>
    <option val="2">2</option>
    <option val="3">3</option>
</select>

<select id="dropdownB">
    <option val="1">1</option>
    <option val="2">2</option>
    <option val="3">3</option>
</select>

<select id="dropdownC">
    <option val="1">1</option>
    <option val="2">2</option>
    <option val="3">3</option>
</select>

SCRIPT

var indexDropDown = ["A","B","C"];
for (var i = 0; i < indexDropDown.length; i++) {
    $("#dropdown"+indexDropDown[i]+"  option[value="+i+"]").attr('selected','selected');
    }

我希望在下拉列表A中选择1,在下拉列表中选择2,在下拉列表中选择3,但没有任何反应。错误在哪里? 这是fiddle

提前致谢!

5 个答案:

答案 0 :(得分:1)

三件事:

1)在声明数组:后,您使用了;而不是indexDropDown

2)你使用一个从零开始的索引器来遍历数组,而值以1开始;因此,当循环

时,将{1}添加到i

3)您更新了value属性,而在html中您使用了val属性,因此请更新一个而不是value

var indexDropDown = ["A","B","C"];
for (var i = 0; i < indexDropDown.length; i++) {
    $("#dropdown"+indexDropDown[i]+"  option[val="+(i+1)+"]").attr('selected','selected');
}   

<强> FIDDLE

答案 1 :(得分:1)

试试这个jquery代码: -

 $("select").each(function(i, sel) {
     $(sel).find("option:eq(" + i + ")").attr('selected', 'selected');
 });

在上面的示例中,您不需要数组...

工作示例: - http://jsfiddle.net/L7S37/12/

如果您仍想使用自己的代码,请使用下面给出的代码......

代码: -

var indexDropDown = ["A","B","C"];
for (var i = 0; i < indexDropDown.length; i++) {
    $("#dropdown"+indexDropDown[i]).find("option[val="+(i+1)+"]").attr('selected','selected');
}   

参见工作示例: -

http://jsfiddle.net/L7S37/7/

答案 2 :(得分:0)

嘿,早些时候你的代码是错误的

var indexDropDown = ["A","B","C"];
for (var i = 0; i < indexDropDown.length; i++) {
    $("#dropdown"+indexDropDown[i]+"  option[value="+i+"]").attr('selected','selected');
    }   

您已申请&#34;:&#34;而不是&#34;;&#34;我想现在它会起作用

答案 3 :(得分:0)

两件事:

  1. 您的第一行以:而不是;结尾,因此未分配数组值。

  2. 你的for循环是0索引,但你要分配的值是1,2和3.对于i = 0,你需要value = 1,i = 1,value = 2,对于i = 2,值= 3。

  3. 更新代码:

    var indexDropDown = ["A","B","C"];
    for (var i = 0; i < indexDropDown.length; i++) {
        $("#dropdown"+indexDropDown[i]+"  option[val="+(i+1)+"]").attr('selected','selected');
        }   
    

    Fiddle

    一个有用的提示:在运行脚本时检查浏览器控制台。这就是我找到:的方式。只是阅读脚本很容易错过。在Chrome中,点击F12并点击console即可查看您所在网页上的javascript错误。

答案 4 :(得分:0)

你用冒号结束第一行会导致语法错误。

除此之外,您的<option>代码还有val个属性,而不是value个属性。

最后,因为你从0迭代到2,并且你的值从1到3列出,所以在选择元素时你需要使用i+1

要实现您想要的行为,您可以更正属性并对JavaScript进行一些小的更改。

var indexDropDown = ["A","B","C"];
for (var i = 0; i < indexDropDown.length; i++) {
    $("#dropdown"+indexDropDown[i]+"  option[value="+(i+1)+"]").attr('selected','selected');
}

这是fiddle