DOMで生成したinput要素のname属性がセットされない
DOMで生成したinput要素をgetElementsByNameでとろうとしたらとれない。
なんでじゃーって調べたらIE6のバグらしい。
じゃあ、IE7じゃどうだろうか?と思って確認してみた。
http://www.daisun-labs.org/test/input_name.html
↑IEでみてね。
結果は、、、
<input>
やっぱりName属性は取れてない。type属性は指定しないとtextになるから設定されない
ようだ。
IE6に限らずのようだ。
じゃあ、どう解決したらいいか?
DOMで生成している部分を
var input = document.createElement("input"); input.setAttribute("type", "text"); input.setAttribute("name", "text1"); divTest1.appendChild(input);
innerHTMLをつかって
divTest1.innerHTML = '<input type="text" name="text1" />';
書く。
解決編ソース
http://www.daisun-labs.org/test/input_name2.html
そうすると、ちゃんと
<input name="text1">
となる
innerHTMLって便利だねー。
以下、余談。
これをやってる中で、
FireFoxにinnerTextがないことをすっかり忘れていて余計な時間を取られてしまった。
FireFoxはtextContentだね。忘れないようにしよ。