2009-06-09 9 views
21

入力フォームの非表示入力とチェックボックスに新しい値を割り当てようとしました。 Firefoxでは正常に動作していますが、IEでは動作しません(IE 7を使用しています)。誰かが私のコードに何が間違っているか知っていますか?document.getElementById()。valueとdocument.getElementById()。IEで動作していないことを確認しました

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; 
+2

はできません。このようにそれを行う、ことをしないでくださいあなたは受け入れられた答えを排除しますか?それは間違っている! –

+0

私はjQueryでの反応は、特にJavascriptのために質問されたときに非常に素人です。 – theoutlander

答えて

-5

あなたの人生を楽にしてくれるクロスブラウザライブラリであるjQueryをご覧ください。

var msg = 'abc'; 
$('#msg').val(msg); 
$('#sp_100').attr('checked', 'checked'); 
+59

getElementByIdとvalueは、太陽の下のすべてのブラウザでサポートされています。 jQueryは世界のすべてのものに対する答えではなく、この問題はほとんど必要ありません。 –

+6

@Paolo - 真実ですが、質問の基本的な性質を考慮すると、質問者はそれを使ってどれくらいの時間を節約できるかを認識していないと考える価値があるので、これは実際には叱責に値するとは思わない。 – karim79

+3

@Paolo - すべてのブラウザで実装されていますが、IE(6/7)はdocument.getElementById()を実装しています.jQueryはIEのヒューリスティックによってバグを回避します。 http://webbugtrack.blogspot.com/2007/08/bug-152-getelementbyid-returns.htmlこの場合、この方法は問題ではないと私は考えています。 – scunliffe

5

...私たちはここに表示されない他の何かがあるに違いありません。

Check this out。 IE7で私のために働いてください。送信すると、URLに渡された変数が表示されます。

2

金庸 - IE has an issue with polluting the global scope「名前」または「初期」ページのロード時に設定した「id」属性を持つ任意のDOM要素へのオブジェクト参照を持ちます。

したがって、変数名に問題がある可能性があります。

これを試して、動作するか確認してください。

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

IEは、その実際の要素への参照を入力の値を設定しようとする(エラーを無視します)が、新たな価値をあなたに残していること(元のコード内の)可能性があります。

IE6/IE7では、オブジェクトに名前を付けることは重要ではないことに注意してください。 IEは "foo" "Foo"と "FOO"はすべて同じオブジェクトだと考えています。

13

グループ化されていない要素の場合、名前と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; 

ご覧くださいhttp://www.impressivewebs.com/avoiding-problems-with-javascript-getelementbyid-method-in-internet-explorer-7/

関連する問題