Javascript document.getElementById().值和document.getElementById().已选中,不适用于IE

Javascript document.getElementById().值和document.getElementById().已选中,不适用于IE,javascript,Javascript,我试图在输入表单的隐藏输入和复选框中指定一个新值。它在Firefox中运行良好,但在IE中却不行(我使用的是IE7)。有人知道我的代码有什么问题吗 HTML: 您粘贴的代码应该可以工作。。。一定还有什么我们没有看到的 。在IE7上为我工作很好。提交时,您将看到URL中传递的变量。请查看一个跨浏览器的库,它将使您的生活更加轻松 var msg = 'abc'; $('#msg').val(msg); $('#sp_100').attr('checked', 'checked'); Jin Yon

我试图在输入表单的隐藏输入和复选框中指定一个新值。它在Firefox中运行良好,但在IE中却不行(我使用的是IE7)。有人知道我的代码有什么问题吗

HTML:


您粘贴的代码应该可以工作。。。一定还有什么我们没有看到的

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

请查看一个跨浏览器的库,它将使您的生活更加轻松

var msg = 'abc';
$('#msg').val(msg);
$('#sp_100').attr('checked', 'checked');
Jin Yong-,对象引用任何在“初始”页面加载上设置了“name”或“id”属性的DOM元素

因此,您可能会因变量名而出现问题

试试这个,看看是否有效

var someOtherName="abc";
//  ^^^^^^^^^^^^^
document.getElementById('msg').value = someOtherName;
document.getElementById('sp_100').checked = true;
IE有可能(在您的原始代码中)尝试将输入值设置为对该实际元素的引用(忽略错误),但没有留下新值


请记住,在IE6/IE7中,命名对象并不重要。IE认为“foo”“foo”和“foo”都是相同的对象。

对于非分组元素,名称和id应该相同。在本例中,您将名称命名为“sp”,将id命名为“sp_100”。不要那样做,像这样做:

HTML:

欲知详情


请访问:

getElementById和value,checked是sun下所有浏览器都支持的。jQuery并不是世界上所有问题的答案,这个问题几乎不需要它。@Paolo-True,但考虑到问题的基本性质,假设提问者不知道使用它可以节省多少时间,这是值得的,所以我不认为这真的值得谴责。@Paolo-True所有浏览器都实现了它。。。但是IE(6/7)实现document.getElementById()是错误的,jQuery通过IE的启发式方法避免了这些错误。但是在这种情况下,我不认为这个方法是问题所在。你不需要一些过激的框架来做到这一点。但您需要做的是:实际检查函数是否没有返回null:-)……var o=document.getElementById('msg');如果(o==null)//在这种特殊情况下执行某些操作。。。。else x=o.value;/:-)难道你不能排除公认的答案吗?这是错误的!当专门针对Javascript提出问题时,我发现jQuery的回答非常业余。
var msg = 'abc';
$('#msg').val(msg);
$('#sp_100').attr('checked', 'checked');
var someOtherName="abc";
//  ^^^^^^^^^^^^^
document.getElementById('msg').value = someOtherName;
document.getElementById('sp_100').checked = true;
<input type="hidden" id="msg" name="msg" value="" style="display:none"/>
<input type="checkbox" name="sp" value="100" id="sp">
var Msg="abc";
document.getElementById('msg').value = Msg;
document.getElementById('sp').checked = true;