この問題に対するいくつかの「回答」を調べましたが、ほとんどの人は getElementsByName() によって返された結果を NodeList として扱っていませんでした!
編集:クリックされた要素に基づいて要素を非表示/表示しようとしています。これをdocument.getElementByIdを使用してハードコーディングし、非表示/表示したい要素があるたびに追加するだけです。しかし、何かという名前のすべての要素を取得し、ループを実行して非表示/表示することができれば理想的です。次に、書き込み時に要素に名前をタグ付けするだけで、このループは変更なしで機能します。私のコードの下では、テスト目的で値を使用してアラートをポップアップしようとしています。今のところ、一貫してnullエラーで壊れています。これは会社が使用しているものであるため、私は Internet Explorer 9 を使用して設計しています。
コード:
<input type="radio" name="Area" value="Engineering" id="EngineeringCheck" onclick="javascript: ShowContentEngineering();" />Engineering
<script type="text/javascript">
function ShowContentEngineering() {
alert(document.getElementsByName('EngineeringAreas')[0].value)
document.getElementById('InformationBlock').style.display = 'block';
}
</script>
<h5 name="EngineeringAreas" value="luls"> WHAT THE HECK </h5>
上記のコードは、getElementsByName('EngineeringAreas')[0] のオブジェクトが null であると言って中断します。明らかに、そのすぐ下では null ではありません... getElementsByName('string')[0].value と要素の値を混同していますか? それとも、他の値を取得していますか?
理想的には、後で他の要素を追加し、「EngineeringAreas」でタグ付けして、非表示/表示機能をいじる必要がないようにします。
編集:エラーメッセージは次のとおりです。
Unhandled exception at line 53, column 9 in http://localhost:57264/Home/Index
0x800a138f - Microsoft JScript runtime error: Unable to get value of the property 'value': object is null or undefined