1

入力ボックスの 1 つを選択してフィールドの背景色を変更したいフィールドがあります。私の試みは、フィールドである入力の親の html クラスを、単純な onfocus アクションによって変更することでしたが、反応が見られません。

私は次のものを持っており、クラス名を再確認しました。

スクリプト内:

function changefield()
{
document.getElementById(this.parentNode).className = "temp_field";
}

HTMLで:

<input class="type1" type="text" size="30" onFocus="changefield()">

これはかなり明らかな初心者の間違いを犯しているように感じますが、すでに 2 人で遊んでいて無駄に終わっています。

4

2 に答える 2

2

2つのこと:

  • 内部changefieldでは、プロパティを持たないをthis参照しているため、に渡しています。windowparentNodeundefinedgetElementById
  • 親ノードがあったとしても、文字列を期待しthis.parentNodeながらDOMノードを返します。getElementById

簡単な解決策は、変更するDOM要素を関数に渡すことです。

function changefield(element) {
    element.className = "temp_field";
}

onFocus="changefield(this.parentNode)"

親ノードにIDがある場合でも、id()への参照がすでにある場合は、ノードを検索しても意味がありません.parentNode

イベント処理とイベントハンドラーをバインドする方法の詳細については、quirksmode.orgの優れた記事を参照してください

于 2013-03-11T20:15:54.590 に答える
0

あなたはに渡しthis.parentNodeていgetElementById()ます。

getElementId()引数としてid文字列が必要です(DOM要素ではありません)。

于 2013-03-11T20:15:19.583 に答える