首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从动态创建的选项中设置选项"selected“属性

从动态创建的选项中设置选项"selected“属性
EN

Stack Overflow用户
提问于 2011-01-04 11:06:04
回答 17查看 443.1K关注 0票数 67

我有一个使用javascript函数动态创建的select选项。选择对象为

代码语言:javascript
复制
<select name="country" id="country">
</select>

当执行js函数时,"country“对象是

代码语言:javascript
复制
<select name="country" id="country">
    <option value="AF">Afghanistan</option>
    <option value="AL">Albania</option>
    ...
    <option value="ID">Indonesia</option>
    ...
    <option value="ZW">Zimbabwe</option>
</select>

并将“印度尼西亚”显示为默认选择的选项。注意:该选项中没有selected="selected"属性。

然后,我需要将selected="selected"属性设置为“印度尼西亚”,并使用下面的代码

代码语言:javascript
复制
var country = document.getElementById("country");
country.options[country.options.selectedIndex].setAttribute("selected", "selected");

使用firebug,我可以看到“印度尼西亚”选项如下所示

代码语言:javascript
复制
<option value="ID" selected="selected">Indonesia</option>

但在IE中失败(在IE 8中测试)。

然后我试着使用jQuery

代码语言:javascript
复制
$( function() {
    $("#country option:selected").attr("selected", "selected");
});

它在FFX和IE中都失败。

我需要“印尼”选项有selected="selected"属性,所以当我点击重置按钮,它将再次选择“印尼”。

更改js函数以动态创建"country“选项不是一个选项。该解决方案必须在FFX和IE中都有效。

谢谢

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2011-01-04 12:03:44

问得好。您需要修改HTML本身,而不是依赖于DOM属性。

代码语言:javascript
复制
var opt = $("option[val=ID]"),
    html = $("<div>").append(opt.clone()).html();
html = html.replace(/\>/, ' selected="selected">');
opt.replaceWith(html);

代码获取印度尼西亚的option元素,克隆它并将其放入一个新的div (不在文档中)以检索完整的HTML:<option value="ID">Indonesia</option>

然后执行字符串替换,将属性selected="selected"作为字符串添加,然后将原始选项替换为这个新选项。

我在IE7上进行了测试。在重置按钮正常工作的情况下可在此处查看:http://jsfiddle.net/XmW49/

票数 30
EN

Stack Overflow用户

发布于 2011-01-04 12:12:15

你想太多了:

代码语言:javascript
复制
var country = document.getElementById("country");
country.options[country.options.selectedIndex].selected = true;
票数 112
EN

Stack Overflow用户

发布于 2012-12-05 03:12:00

您应该从relative option元素中设置所需的值,而不是修改HTML本身:

代码语言:javascript
复制
$(function() {
    $("#country").val("ID");
});

在本例中,"ID“是选项”印度尼西亚“的值。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4590311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档