javascriptは[UncaughtTypeError:HTMLHeadingElementで未定義のプロパティ「style」を読み取ることができません。]を解決します。



Javascript Solves Uncaught Typeerror



1.まず、この問題のあるコードをランダムに選択しました。コードは次のとおりです。

var aList = document.querySelectorAll( '。F-nav-lih2')
var aHide = document.querySelectorAll( '。F-hide-1')
for(var i = 0 i AList [i] .onclick = function(){//マウスクリックイベント
console.log( 'あなたは牛です'、i)
aHide [i] .style.height = '125px' //この時点でエラーが生成されます。エラーの理由は、iの値が範囲外であるためです。
}

}



2.操作を完了して対応するボタンをクリックすると、図に示すように、次の問題が発生します。

3. iの値がaList.lengthを超えています!何故ですか?この種の問題は、しばしば[値交差問題]と呼ばれます。



原因:ブラウザはjsファイルを上から下に解析します。ただし、jsには1つの例外があります。それは、マウスクリックイベントです。 Webページの実行後、クリックイベントは実行されないためです。

上の図に示すように、ブラウザがforループのonclickを解釈すると、ブラウザは終了し、対応する情報をボックスに格納してから、[i = aList.length]がループ条件を満たさないことを認識してループします。 、ループから飛び出します次に、下向きに実行し続けると、このような問題が発生します。

4.このような問題を解決する方法はたくさんあります。以下は一つの方法に過ぎません、私は皆を助けたいです!

var aList = document.querySelectorAll( '。F-nav-lih2')
var aHide = document.querySelectorAll( '。F-hide-1')

For(var i = 0 i / *
最初のサイクル:aList [0] .index = 0
2番目のサイクル:aList [1] .index = 1
3番目のサイクル:aList [2] .index = 2
対応する添え字[インデックス]を保存するために使用されます
* /
aList [i] .index = i //カスタム属性は対応する添え字を保存するために使用されます

AList [i] .onclick = function(){//マウスクリックイベント

Console.log( 'あなたは牛です'、this.index)//このポインタはどこでプレイするかです! this.indexは1対1の添え字を取得します



AHide [this.index] .style.height = '125px' //この時点でエラーが生成されます。エラーの理由は、iの値が範囲外であるためです。
}

}

解決策:カスタムプロパティ。関連する添え字情報を保存し、このポインターを使用して関連する添え字[インデックス]を指定します。

解決策は次のとおりです。