3

この問題に対するいくつかの「回答」を調べましたが、ほとんどの人は 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
4

2 に答える 2

4

どうぞ... ようです:

  1. onclick="javascript:<--- 必要ありません - 関数名を参照するだけです
  2. ShowContentEngineeringウィンドウコンテキストで設定する必要があります
  3. 値属性を許可しない要素の「値」属性を参照しています (h5)

h5コードのinnerHTMLを取得する代わりに機能させました

<input type="radio" name="Area" value="Engineering" id="EngineeringCheck" onclick="ShowContentEngineering();" />Engineering

<h5 name="EngineeringAreas"> WHAT THE HECK </h5>
<script>
    window.ShowContentEngineering = function() {
        alert(document.getElementsByName('EngineeringAreas')[0].innerHTML)
        document.getElementById('InformationBlock').style.display = 'block';
    }
</script>

ここに実用的なフィドルがあります: https://jsfiddle.net/mu970a8k/

于 2015-10-08T23:07:58.577 に答える
1

.attributes[1]との間.getElementsByName('EngineeringAreas')に挿入し.valueます。<h5>1は、EngineeringAreas という名前の要素の 2 番目の属性である を指しますvalue.value後に配置する.attributes[1]と、アラート ボックスに値テキスト「luls」が返されます。次に、アラート コードを次のように設定する必要があります。

alert(document.getElementsByName('EngineeringAreas')[0].attributes[1].value);

詳細: http://www.w3schools.com/jsref/prop_attr_value.asp

于 2015-10-08T23:08:38.853 に答える