0

次の方法でJavaスクリプトのコードを持っています。

function changeRoomType()
{

var rtype = document.getElementById('typeofroom').value;
var ps = document.getElementsByName('radios');
if(rtype == 'sb' || rtype == 'db')
{
    ps[0].style.display = 'block';
    ps[1].style.display = 'block';
}
else
{
    ps[0].style.display = 'none';
    ps[1].style.display = 'none';
}
}

私のhtmlコードは

<p style="position: absolute; float: left; bottom: 138px; width: 50px; left: 359px;display:none;"
   name='radios'>
  <label for="class">Superior</label>
  <input type="radio" name="radio" id="class" value="s" tabindex="1" style="float:left; width:25px;background-color:transparent !important;"/>
</p>
<p style="position: absolute; float: left; bottom: 138px; width: 50px; left: 287px;display:none;"
   name='radios'>
  <label for="class2">Premier</label>
  <input type="radio" name="radio" id="class2" value="p" tabindex="1" style="float:left; width:25px;background-color:transparent !important;"/>
</p>

上記の関数は、onchange イベントが記述されているセレクト ボックスで値が選択されたときに呼び出されます。選択ボックスで部屋のタイプを選択すると、2 つのラジオ ボタンが表示されます。これは、Google Chrome と Mozilla で正常に動作しています。しかし、Internet Explorer8 ではエラー
0.style が null であるか、オブジェクトではありません。 ラジオボタンを表示しません。

前もって感謝します!

4

2 に答える 2

2

関連する質問と解決策がここに掲載されています。getElementsByTagName に関する MSDN ドキュメントを参照してください。MSDN のこのドキュメントでは、getElementsByNameの動作が**expando ** プロパティの影響を受けることについて説明しています。

expandoプロパティを制御することにより、IE が HTML 要素の標準属性セットの一部ではない属性を処理する方法を定義できます。MSDN の Expando を参照してください。

p タグのドキュメントは、 name属性がこのタグの標準属性の一部ではないことを示唆していしたがって、これは拡張属性です。したがって、Mozilla と Chrome はこの拡張された属性と機能に満足しています。document.expando=trueJavascript で設定するまで、IE はこの属性を認識しませんこれは、ブラウザ名を確認して、条件付きで行う必要があることに注意してください。

後付けとして - このような DOM 操作を実行するために jQuery を使用しないのはなぜですか? クロスブラウザー対応の JavaScript コードを書くという片頭痛から解放され、Web サイトの機能に集中できるようになります。

于 2013-07-28T12:04:13.993 に答える
0

HTML気に入ったページをチェックインして、

<input type='radio' name="radios" id='radio1'/>
<input type='radio' name="radios" id='radio2'/>
于 2013-07-28T11:19:45.420 に答える