document.getElementById().value和document.getElementById()。checked不适用于IE
问题描述:
我试图给输入表单的隐藏输入和复选框分配一个新值。它在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;
答
看看jQuery,这是一个跨浏览器的图书馆,它会让你的生活变得更轻松。
var msg = 'abc';
$('#msg').val(msg);
$('#sp_100').attr('checked', 'checked');
答
金庸 - 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”都是同一个对象。
答
对于非分组元素,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;
详情
无法你消除了接受的答案?这只是错误的! – 2013-11-06 20:07:10
当问及专门为Javascript问题时,我发现非常业余jQuery的反应。 – theoutlander 2013-11-20 20:04:54