1

「プロパティの値を取得できません」「チェック済み」というエラーが表示されます。オブジェクトがnullまたは未定義です。チェックボックスをクリックしたとき。

フォームの名前は「test」です。最初にチェックされたチェックボックスに基づいて、より多くの入力フィールドを表示したいのですが、通過した場合、他のフィールドは表示されません。

スクリプトは次のとおりです。

function showhidefield()
{
    if (document.test.submode.checked) {
        document.getElementById("hideablearea").style.display = "block";
    } else {
        document.getElementById("hideablearea").style.display = "none";
    }
}

これが私の入力行です:

<input type="checkbox" name="submode" onclick="showhidefield()">

JSをより堅固にして、この他のWebページや任意のブラウザーで機能するようにする方法はありますか?

4

2 に答える 2

1

チェックボックスにIDを入力し、を使用しますgetElementById。IDは一意である必要があるため、これは他の方法よりも信頼性が高くなります。

于 2013-02-20T23:33:27.817 に答える
0

<form>。という名前のページが常に表示されるとは限りません"test"

thisを使用して現在の要素を参照することにより、IDなしで機能させることができます。

<input type="checkbox" name="submode" onclick="showhidefield(this, 'hideablearea')">

JavaScript:

function showhidefield(element, id)
{
  var node = document.getElementById(id);

  if (node) {
    node.style.display = element.checked ? 'block' : 'none';
  }
}

デモ

関数の最初の引数はチェックボックス自体であり、2番目の引数は表示または非表示にする要素のIDです。

于 2013-02-20T23:36:06.927 に答える