2

我的 Jeep 有一个基于浏览器的服务手册。在 IE 中效果很好,但在 Firefox 中效果不佳。基本上有一个目录,您可以扩展并深入了解子主题,例如

  • [+] 离合器
  • [+] 冷却
  • [+] 电气

但是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 语句中定义。

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

tempIndex在 for 循环开始时没有初始化,导致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 回答