0

なぜエラーが発生するのか、一生理解できません。

「タイプエラー:eCurVarが未定義です」。以下のコードを確認してください。

    var aBBTemplates = document.getElementsByClassName ("cBBTemplates");
    var i = 2;
    while (i < aBBTemplates.length)
    {
        var eCurVar = aBBTemplates[i];
        if (eCurVar === e.target)
        {
            eCurVar.style.zIndex = 3;
     // type error: eCurVar is undefined on the following line. 
        }   else if (eCurVar.style.zIndex === 3)    {
            console.log (eCurVar);
            eCurVar.style.zIndex = 3-1;
        }   else
        {
            console.log (eCurVar)
            eCurVar.style.zIndex = i;
        }
        i--;
    }
4

4 に答える 4

3

各反復の後i、1単位ずつデクリメントされます...そして、3回の反復の後、それは負になります。だからあなたはaBBTemplates[-1]あなたが得ることを読みますundefined

数秒で何が起こっているのか理解できない場合console.log、最善の策は、debugger;命令を追加し、devtoolを開くことです(通常はF12を押します)。

あなたの問題に関しては、あなたはチェックを追加することによってそれを修正することができますi

while (i < aBBTemplates.length && i >= 0) {
}
于 2012-11-21T10:26:49.353 に答える
1

2番目のケースaBBTemplates[i]ではおそらくnull

于 2012-11-21T10:25:17.250 に答える
1

あなたは2に等しいから始めます。それが何か意味のあるものを返すiと仮定しましょう。aBBTemplates[2]あなたはそれで何かをし、彼らはデクリメント iします。aBBTemplates[1]意味のある仮定をしましょう。

続けてください、そして遅かれ早かれi-1になります、それは読むとき間違いなく意味がありませんaBBTemplates[-1]

于 2012-11-21T10:27:59.687 に答える
1

関数がeCurrVarもnullでないかどうかをチェックします

if (eCurVar != null && eCurVar === e.target){
// your code
} else {
// if ecurvar == null or ecurvar != e.targer
}

また、i配列には負のインデックスを持つアイテムが含まれていないため、自分が正の数であるかどうかを確認します。

while(i >= 0 && i < aBBTemplates.length)
于 2012-11-21T10:28:39.533 に答える