2009-06-09 103 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/

相关问题