document.getElementById()。value和document.getElementById()。选中不适用于IE

时间:2009-06-09 23:39:59

标签: javascript

我尝试将新值分配给输入表单的隐藏输入和复选框。它在Firefox中工作正常,但在IE中却没有(我使用的是IE 7)。有谁知道我的代码出了什么问题?

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;

4 个答案:

答案 0 :(得分:17)

对于非分组元素,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/

答案 1 :(得分:5)

你粘贴的代码应该有用......我们在这里看不到其他东西。

Check this out。在IE7上为我工作很好。提交时,您将看到URL中传递的变量。

答案 2 :(得分:2)

Jin Yong - IE has an issue with polluting the global scope 对象引用任何在“初始”页面加载时设置了“name”或“id”属性的DOM元素。

因此,由于您的变量名称,您可能会遇到问题。

试试这个,看它是否有效。

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

有可能(在您的原始代码中)IE尝试将输入值设置为对该实际元素的引用(忽略错误),但不会给您留下任何新值。

请记住,在IE6 / IE7中,对于命名对象无关紧要。 IE认为“foo”“Foo”和“FOO”都是同一个对象。

答案 3 :(得分:-5)

查看jQuery,一个跨浏览器的图书馆,让您的生活更轻松。

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