PR
キーワードサーチ
カレンダー
コメント新着
HTAではまったのでメモ。ラジオボタンをDOM生成していると、getElementsByNameで取得できないらしい。以下、検証コード
<body>
<input type="radio" name="radio">
<script type="text/javascript">
var r1=document.createElement( 'input' );
var r2=document.createElement( 'input' );
var r3=document.createElement( 'input' );
r1.type='radio'
r2.type='radio'
r3.type='radio'
r1.name='radio'
r2.name='radio'
r3.name='radio'
document.body.appendChild( r1 )
document.body.appendChild( r2 )
document.body.appendChild( r3 )
alert( 'input要素数は' + document.getElementsByTagName( 'input' ).length )
alert( 'name属性がradioである要素数は' + document.getElementsByName( 'radio' ).length )
alert( '自作関数で数えると' + getRadios( 'radio' ).length )
function getRadios( name ){
varret=[];
varinputs=document.getElementsByTagName( 'input' )
for( var i = 0, len = inputs.length; i < len; i++ ){
if ( inputs[ i ].type != 'radio' ){ continue; }
if ( inputs[ i ].name != name ){ continue; }
ret.push( inputs[ i ] );
}
returnret;
}
</script>
</body>
仕方ないんで自作関数でしのいでいたのですが、
<meta http-equiv="X-UA-Compatible" content="IE=8" />
の一行を追加すると正常動作になりました。IE7以前の仕様(?)だったんですね。