Javascript document.forms[i][j]有问题。类型,返回未定义

Javascript document.forms[i][j]有问题。类型,返回未定义,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,我正在写一个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; } } var cForm=''; var doc=单据; 对于(i=0;i

我正在写一个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;
    }
}
var cForm='';
var doc=单据;
对于(i=0;i
//

if(cForm!='')
{
对于(i=0;i
第一个代码运行良好。第二个代码显示一个错误,如:“文档表单[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 ;
        } 

    }
}
if(即长度和类型(cForm)!=“未定义”)
{
cForm=parseInt(cForm);
对于(i=0;i
doc.forms[0][0]
可以是一个文本区域,比如说,这将使它没有
。键入


另一方面,您为什么要使用
eval
,确切地说???

错误真的是
doc.表单[0][0]未定义
还是
doc.表单[0][0]未定义
?注意forms.oops中的
s
!没错,它的doc.forms[0][0]。type给出了未定义的:(@Michael,实际上我为任何类型的网页制作了这个插件。所以,没有这样的HTML。我复制了上面的代码并粘贴在导航栏上,就像javascript:(上面的代码)一样,它可以工作!但是当我把它放在xpi(FF插件)中时,它就不工作了。它给出了上面提到的错误:(您的代码给出了此错误类型错误:doc.forms[cForm]未定义。我添加了一些清理。请重试,并确保在运行我的代码之前设置了
cForm
。我不知道发生了什么。但它不起作用。因此,我添加了其他{alert('not executed')}。我发现来自添加的else部分的警报每次都在执行。我现在认为FF不支持加载项中的document.form[i][j],尽管我使用的是FF版本4.0.1!!:(最后我得到了:)它的doc.forms[0]。elements[0]。键入
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 ;
        } 

    }
}