2012-11-08 28 views
0

我動態創建的格式,並附加元件,例如:IE輸入無線電值總是返回「上」,而不是值設置

var input = document.createElement('input'); 
input.name = extension_id + '[]'; 
input.value = value.id; 
input.className = 'changeable'; 
input.type = 'radio'; 
input.checked = true; 
wrapper_div.appendChild(input); 

作爲產生的HTML的一個例子(這是從瀏覽器) :

<input name="2[]" class="changeable" type="radio" value="5"> 

在Chrome和Firefox,javascript的:

document.getElementsByName("2[]")[0].value 

返回 '5' 如預期的,但在IE(IE9在我的測試)它返回'開'。

是否有一些原因,爲什麼IE忽略值集,而是返回檢查狀態?

回答

1

基本上,它不是一個值被忽略的問題,因爲IE將元素當作它的對象 - 一個單選按鈕,並初始化它。

如果打開調試器並逐步執行代碼,則可以看到值5確實已設置。當你到達設置輸入類型的線時,I.e input.type='radio',你可以看到這個值從5變到'on'。把它想象成IE知道輸入確實是一個單選按鈕的那一刻,就調用一個單選按鈕的構造函數。

修復?

在這種情況下足夠簡單,只需更改您的語句的順序即可。對!就那麼簡單。設置類型,然後設置值。

這在IE9和Chrome中可以正常工作。

{ 
    var extension_id = 2; 
    var input = document.createElement('input'); 
    input.name = extension_id + '[]'; 
    input.type = 'radio'; 
    input.checked = true; 
    input.value = 5; 
    input.className = 'changeable'; 
    document.body.appendChild(input); 

    alert(input.value); 
} 

哦,在我忘記之前 - 你可以在IE中用F12打開調試器。 - 有很多關於如何使用它的視頻。 :)

+0

謝謝!我想我沒有想到這個命令很重要,很高興知道。感謝關於調試器的提示。 – AndyC

+0

不能相信IE11仍然受此影響,什麼垃圾瀏覽器。修復確實工作,謝謝! –

相關問題