Firefox“TypeError:all [i]未定义”

时间:2013-09-02 14:56:17

标签: javascript firefox

我的吉普车有一个基于浏览器的服务手册。适用于IE但不适用于Firefox。基本上有一个TOC可以扩展并深入研究子主题,例如

  • [+]离合器
  • [+]冷却
  • [+] Electrical

但点击主题旁边的[+]时,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语句上出错,它具有类似的语法。

这是一个可变范围问题吗?看起来像Firefox在if语句中不喜欢var i,尽管在for语句中定义了。

3 个答案:

答案 0 :(得分:1)

如果您希望tempIndex在第一次迭代中工作,则必须将undefined设置为有效数字而不是all[ i ]

例如

var tempIndex = 0;

与JS房间的朋友一起,我们在IE版本7到10上测试了[0,1][undefined],它总是给我们undefined。因此,无论是在较旧的浏览器上进行测试,还是在问题中都缺少某些内容。

答案 1 :(得分:0)

tempIndex未在for循环开始时初始化,导致i也为undefined

答案 2 :(得分:0)

var i = tempIndex:tempIndex尚未在任何地方定义。除非你的意思是tempImgIndex,否则你的变量名称就错了。如果它的意思是tempImgIndex则需要var tempImgIndex = 0而不是var tempImgIndex = '0'