2009-06-09 104 views
21

我試圖給輸入表單的隱藏輸入和複選框分配一個新值。它在Firefox中工作正常,但不在IE中(我使用的是IE 7)。有人知道我的代碼有什麼問題嗎?document.getElementById().value和document.getElementById()。checked不適用於IE

HTML:

<input type="hidden" id="msg" name="msg" value="" style="display:none"/> 
<input type="checkbox" name="sp" value="100" id="sp_100"> 

的Javascript:

var Msg="abc"; 
document.getElementById('msg').value = Msg; 
document.getElementById('sp_100').checked = true; 
+2

無法你消除了接受的答案?這只是錯誤的! – 2013-11-06 20:07:10

+0

當問及專門爲Javascript問題時,我發現非常業餘jQuery的反應。 – theoutlander 2013-11-20 20:04:54

回答

-5

看看jQuery,這是一個跨瀏覽器的圖書館,它會讓你的生活變得更輕鬆。

var msg = 'abc'; 
$('#msg').val(msg); 
$('#sp_100').attr('checked', 'checked'); 
5

您粘貼應該工作的代碼......一定有別的東西我們沒有看到這裏。

Check this out。在IE7上爲我工作很好。提交時,您將看到在URL中傳遞的變量。

2

金庸 - IE has an issue with polluting the global scope與同一個「名」或「id」屬性的「初始」網頁加載設置任何DOM元素對象的引用。

因此,由於您的變量名稱,您可能會遇到問題。

試試看看它是否有效。

var someOtherName="abc"; 
// ^^^^^^^^^^^^^ 
document.getElementById('msg').value = someOtherName; 
document.getElementById('sp_100').checked = true; 

有機會的話(在你原來的代碼),IE嘗試將輸入的值設置爲到實際元素的引用(忽略錯誤),但是你可能沒有新的價值。

請記住,在IE6/IE7中,命名對象並不重要。 IE認爲「foo」「Foo」和「FOO」都是同一個對象。

13

對於非分組元素,name和id應該相同。在這種情況下,您將名稱命名爲「sp」,並將id命名爲「sp_100」。不這樣做,像這樣做:

HTML:

<input type="hidden" id="msg" name="msg" value="" style="display:none"/> 
<input type="checkbox" name="sp" value="100" id="sp"> 

的Javascript:

var Msg="abc"; 
document.getElementById('msg').value = Msg; 
document.getElementById('sp').checked = true; 

詳情

,請訪問:http://www.impressivewebs.com/avoiding-problems-with-javascript-getelementbyid-method-in-internet-explorer-7/

相關問題