document.forms [i] [j] .type出现问题,返回undefined

问题描述

|| 我正在写一个Firefox插件。这是报价的一部分
var cForm = \'\'; 
var doc = document;
for (i = 0; i < doc.forms.length; i++)
{
    var a = doc.forms[i].name + \"\";
    if ( a.search(\"itsMe\") != -1)
    {
        cForm = i;
    }
}
//
if ( cForm != \'\' )
{
    for (i = 0; i < doc.forms[cForm].length; i++)
    {
        var sTotal = \'doc.forms[\' + cForm + \'][\' + i +\'].type\';             
        if ( eval(sTotal) == \"button\")
        {
            return sTotal ;
        } 

    }
}
一个代码运行良好。第二代码显示错误,例如:\“ doc.forms [0] [0]未定义\” 怎么了??救命...     

解决方法

        问题可能出在您使用
eval
时;可能不知道
doc
,因为它不在范围内。通常,应尽量避免使用
eval
。在这种情况下,您确实不需要它,因此请尝试执行以下操作:
if (i.length && typeof(cForm) != \"undefined\")
{
    cForm = parseInt(cForm);
    for (i = 0; i < document.forms[cForm].length; i++)
    {
        if (document.forms[cForm][i].type == \"button\")
        {
            return sTotal ;
        } 

    }
}
    ,        
doc.forms[0][0]
可能是一个文本区域,也就是说,它没有
.type
。 另外,为什么要使用
eval
???