DOCTYPEでJavaScriptが動かなくなる件

これは孔明の罠。

テキスト入力の

<input type=”text” name=”inputA” value=””>

を設けて、この value を JavaScript で取得する場合、

var instr = document.inputA.value;

で取れていたものが、その HTML の先頭に

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">


とかあったりすると取れなくなる!

DOCTYPEなんてCSSの解釈が変わるくらいにしか思ってなかったから、
まさかJavaScriptの動きまで変えてくるとは露ほども思わず。

簡単なサンプルページでは動作してるのに、
それを他のページに埋め込むと動かなくなるもんだから
もう意味ワカンネ!状態でした。

じゃどうすれば良いかというと、

<input type="text" id="inputA" value="">

として、スクリプト側では

var elm = document.getElementById('inputA');
var instr = elm.value;

とすればよろしい。
(実際こっちの方が汎用的な書き方らしいです。)


これで3時間くらい悩みましたよ。トホホ。。。

コメント

タイトルとURLをコピーしました