我尝试将新值分配给输入表单的隐藏输入和复选框。它在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;
答案 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;
了解更多详情
答案 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');