2011-05-28 83 views
1

我正在寫一個firefox插件。下面是引用document.forms [i] [j] .type的問題,返回undefined

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]未定義」

最新錯誤?幫助...

+0

錯誤確實是'doc.form [0] [0]是未定義的嗎?還是它'doc.forms [0] [0]是未定義的?注意形式中的's'。 – 2011-05-28 00:21:24

+0

哎呀!你的權利,它的* doc.forms [0] [0] .type *給出undefined :( – 2011-05-28 00:22:46

+0

請同時發佈HTML – 2011-05-28 00:25:12

回答

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 ; 
     } 

    } 
} 
+0

你的代碼給出了這個錯誤* TypeError:doc.forms [cForm] is undefined * – 2011-05-28 00:26:05

+0

我增加了一些消毒,再試一次,並確保在運行我的代碼之前設置'cForm'。 – 2011-05-28 00:32:10

+0

我不知道發生了什麼但是它不工作,所以我添加了* else {alert('not executed')} *。我發現* added * else *部分的* alert *每次都在執行。 FF不支持document.form [i] [j]的插件,雖然我使用FF版本4.0.1 !! :( – 2011-05-28 00:56:18

0

doc.forms[0][0]可能是一個textarea,說,這將使它沒有.type

在另一張紙條上,你爲什麼要用eval

相關問題