Я пытался присвоить новое значение скрытому входу и флажку формы ввода. Это работает нормально в Firefox, но не в IE (I's using 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;
Код, который вы вставили, должен работать... Должно быть что-то еще, чего мы не видим.
[Проверьте это] (http://jsbin.com/ayefe). У меня все работает на IE7. При отправке вы увидите переменную, переданную в URL.
Jin Yong - IE имеет проблему с загрязнением глобальной области видимости объектными ссылками на любые элементы DOM с атрибутами "name" или "id", установленными при "начальной" загрузке страницы.
Таким образом, у вас могут возникнуть проблемы из-за имени переменной.
Попробуйте это и посмотрите, работает ли это.
var someOtherName="abc";
// ^^^^^^^^^^^^^
document.getElementById('msg').value = someOtherName;
document.getElementById('sp_100').checked = true;
Есть вероятность (в вашем исходном коде), что IE пытается установить значение input в ссылку на этот фактический элемент (игнорирует ошибку), но не оставляет нового значения.
Имейте в виду, что в IE6/IE7 регистр не имеет значения для именования объектов. IE считает, что "foo", "Foo" и "FOO" - это один и тот же объект.
Взгляните на jQuery, кроссбраузерную библиотеку, которая значительно облегчит вам жизнь.
var msg = 'abc';
$('#msg').val(msg);
$('#sp_100').attr('checked', 'checked');