document.getElementById().value та document.getElementById().check не працюють для IE

Я спробував присвоїти нове значення прихованому полю введення та прапорцю форми введення. У 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;

Код, який ви вставили, повинен працювати... Має бути щось ще, чого ми не бачимо.

[Подивіться на це (http://jsbin.com/ayefe). У мене на IE7 працює нормально. При відправці ви побачите змінну, передану в URL.

Коментарі (0)

Jin Yong - IE має проблему із забрудненням глобальної області видимості об'єктними посиланнями на будь-які елементи DOM з атрибутом "name" або "id", встановленими при "початковому" завантаженні сторінки.

Таким чином, у вас можуть виникнути проблеми через ім'я вашої змінної.

Спробуйте це і перевірте, чи працює.

var someOtherName="abc";
//  ^^^^^^^^^^^^^
document.getElementById('msg').value = someOtherName;
document.getElementById('sp_100').checked = true;

Існує ймовірність (у вашому оригінальному коді), що IE намагається встановити значення вхідних даних у посилання на цей фактичний елемент (ігнорує помилку), але не залишає вам ніякого нового значення.

Майте на увазі, що в IE6/IE7 регістр не має значення для іменування об'єктів. IE вважає, що "foo" "Foo" і "FOO" - це один і той же об'єкт.

Коментарі (0)
Рішення

Погляньте на jQuery, кросбраузерну бібліотеку, яка значно полегшить ваше життя.

var msg = 'abc';
$('#msg').val(msg);
$('#sp_100').attr('checked', 'checked');
Коментарі (4)