Javascript Firefox“;TypeError:all[i]未定义;

Javascript Firefox“;TypeError:all[i]未定义;,javascript,firefox,Javascript,Firefox,我有一本基于浏览器的吉普车维修手册。在IE中效果很好,但在Firefox中效果不好。基本上,有一个TOC,您可以扩展并深入到子主题,例如 [+]离合器 [+]冷却 [+]电气 但是Firefox在单击主主题旁边的[+]时会抛出以下错误: TypeError: all[i] is undefined itcToc.js line 10 if( "UL" == all[ i ].tagName ) 以下是itcToc.js中的代码: var eCurrentUL, eCurrentL

我有一本基于浏览器的吉普车维修手册。在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;
}
var eCurrentUL、eCurrentLI、eUL、tempIndex、syncIndex=null;
var-eTagName、eSrc、eImgIndex、esynchronizednode=null;
var tempImgIndex='0';
函数getNextULNS(eSrc)
{
var all=document.getElementsByTagName(“*”);
对于(var i=tempIndex;i
我是一名机械师,所以我尽力排除故障。如果我在第10行用一个整数替换I,它将在第15行的下一个If语句中通过这个错误,该语句具有类似的语法


这是一个可变范围问题吗?Firefox似乎不喜欢if语句中的var i,尽管它在for语句中定义。

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

比如说

var tempIndex = 0;


与JS room的朋友一起,我们在IE版本7到10上测试了
[0,1][undefined]
,它总是给我们
undefined
。因此,您可能正在旧浏览器上进行测试,或者问题中缺少了某些内容。

tempIndex
在for循环的开头没有初始化,导致
i
也是
未定义的

var i=tempIndex
:tempIndex在任何地方都没有定义。除非您的意思是
tempImgIndex
,在这种情况下,变量名是错误的。如果它是tempImgIndex,那么它必须是
var tempImgIndex=0
而不是
var tempImgIndex='0'

“0”将是愚蠢的,但可以工作(在第一次和第二次迭代中)。这段代码工作的IE版本是什么?即在
文档中包含/包含注释。getElementsByTagName(“*”
)。相关的无论如何,
getNextULNS
的存在似乎是件坏事。HTML是什么样子的?请注意
var eCurrentUL、eCurrentLI、eUL、tempIndex、syncIndex=null
syncIndex
设置为
null
而不设置其他内容。这似乎不是有意的,但初始化为
null
并不是很有用。你不应该使用
document.all
而不是
document.getElementsByTagName(“*”)
?@格林先生:正确的答案是两者都不使用