2

Jeep のブラウザ ベースのサービス マニュアルがあります。IE では問題なく動作しますが、Firefox では動作しません。基本的に、展開してサブトピックにドリルダウンできる TOC があります。

  • [+] クラッチ
  • [+]冷却
  • [+] 電気

ただし、メイン トピックの横にある [+] をクリックすると、Firefox は次のエラーをスローします。

TypeError: all[i] is undefined
itcToc.js line 10
if( "UL" == all[ i ].tagName )     

itcToc.js のコードは次のとおりです。

var eCurrentUL, eCurrentLI, eUL, tempIndex, syncIndex = null;
var eTagName, eSrc, eImgIndex, eSynchedNode = null;
var tempImgIndex = '0';

function getNextULNS(eSrc)
{
    var all = document.getElementsByTagName("*");
    for(var i = tempIndex; i < all.length; i++)
    {
        if( "UL" == all[ i ].tagName )
        {
        eImgIndex = all[tempIndex - 2];
            return all[ i ];
        }   
        else if( "LI" == all[ i ].tagName )
        {
            break;
        }
    }
    return false;
}

私はメカニックなので、トラブルシューティングに最善を尽くしました。10 行目の i を整数に置き換えると、これを過ぎて、15 行目の次の if ステートメントでエラーが発生します。これは同様の構文です。

これは変数のスコープの問題ですか? for ステートメントで定義されているにもかかわらず、Firefox は if ステートメントの var i を好まないようです。

4

3 に答える 3

1

最初の反復で作業したい場合は、tempIndex代わりに有効な数値を設定する必要があります。undefinedall[ i ]

例えば

var tempIndex = 0;

JS ルームの友人たちと一緒に、[0,1][undefined]IE バージョン 7 から 10 でテストしましたが、常にundefined. したがって、古いブラウザでテストしているか、質問に何かが欠けています。

于 2013-09-02T14:59:26.123 に答える
0

tempIndexforループの開始時に初期化されていないため、同様に発生iしますundefined

于 2013-09-02T14:59:41.407 に答える
0

var i = tempIndex: tempIndex がどこにも定義されていません。tempImgIndexその場合、変数名が間違っているという意味でない限り。そして、それが tempImgIndex であることが意図されている場合は、そうでvar tempImgIndex = 0はない必要がありvar tempImgIndex = '0'ます。

于 2013-09-02T14:59:48.220 に答える