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

Jin*_*ong 22 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">
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

var Msg="abc";
document.getElementById('msg').value = Msg;
document.getElementById('sp_100').checked = true;
Run Code Online (Sandbox Code Playgroud)

小智 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">
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

var Msg="abc";
document.getElementById('msg').value = Msg;
document.getElementById('sp').checked = true;
Run Code Online (Sandbox Code Playgroud)

更多细节

请访问:http://www.impressivewebs.com/avoiding-problems-with-javascript-getelementbyid-method-in-internet-explorer-7/


Pao*_*ino 5

您粘贴的代码应该有效......必须有一些我们在这里看不到的东西.

看看这个.在IE7上为我工作很好.提交时,您将看到URL中传递的变量.


Ste*_*202 -9

看看jQuery,一个跨浏览器库,它会让你的生活变得更轻松。

var msg = 'abc';
$('#msg').val(msg);
$('#sp_100').attr('checked', 'checked');
Run Code Online (Sandbox Code Playgroud)

  • getElementById 和 value,Checked 受到世界上所有浏览器的支持。jQuery 并不是世界上所有问题的答案,这个问题也几乎不需要它。 (63认同)
  • @Paolo - 是的,但考虑到问题的基本性质,值得假设提问者不知道使用它可以节省多少时间,所以我认为这真的不值得谴责。 (7认同)
  • @Paolo - 确实所有浏览器都实现了它...但是 IE (6/7) 实现了 document.getElementById() 错误,并且 jQuery 通过 IE 的启发式方法避免了错误。http://webbugtrack.blogspot.com/2007/08/bug-152-getelementbyid-returns.html 但是在这种情况下我不认为这种方法是问题。 (3认同)