問題描述
我有一個使用 javascript 函數動態創建的選擇選項.選擇對象是
I have a dynamically created select option using a javascript function. the select object is
<select name="country" id="country">
</select>
js函數執行時,country"對象為
when the js function is executed, the "country" object is
<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"
屬性.
and displaying "Indonesia" as default selected option. note : there is no selected="selected"
attribute in that option.
然后我需要將 selected="selected"
屬性設置為印度尼西亞",我使用這個
then I need to set selected="selected"
attribute to "Indonesia", and I use this
var country = document.getElementById("country");
country.options[country.options.selectedIndex].setAttribute("selected", "selected");
使用firebug,我可以看到印度尼西亞"選項是這樣的
using firebug, I can see the "Indonesia" option is like this
<option value="ID" selected="selected">Indonesia</option>
但它在 IE 中失敗(在 IE 8 中測試).
but it fails in IE (tested in IE 8).
然后我嘗試使用 jQuery
and then I have tried using jQuery
$( function() {
$("#country option:selected").attr("selected", "selected");
});
在 FFX 和 IE 中都失敗了.
it fails both in FFX and IE.
我需要印度尼西亞"選項具有 selected="selected"
屬性,因此當我單擊重置按鈕時,它將再次選擇印度尼西亞".
I need the "Indonesia" option to have selected="selected"
attribute so when I click reset button, it will select "Indonesia" again.
更改 js 函數以動態創建國家/地區"選項不是一種選擇.該解決方案必須在 FFX 和 IE 中都有效.
changing the js function to dynamically create "country" options is not an option. the solution must work both in FFX and IE.
謝謝
推薦答案
好問題.您將需要修改 HTML 本身,而不是依賴 DOM 屬性.
Good question. You will need to modify the HTML itself rather than rely on DOM properties.
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</選項>
.
The code grabs the option element for Indonesia, clones it and puts it into a new div (not in the document) to retrieve the full HTML string: <option value="ID">Indonesia</option>
.
然后它會進行字符串替換以添加屬性 selected="selected"
作為字符串,然后用這個新選項替換原始選項.
It then does a string replace to add the attribute selected="selected"
as a string, before replacing the original option with this new one.
我在 IE7 上測試過.在這里看到重置按鈕正常工作:http://jsfiddle.net/XmW49/
I tested it on IE7. See it with the reset button working properly here: http://jsfiddle.net/XmW49/
這篇關于設置選項“已選擇";來自動態創建選項的屬性的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!