我有一個問題,即一個方法獲取未定義的變量錯誤,即使我在調用前檢查變量未定義。Javascript錯誤與未定義的變量
// Sets focus and text-select to the passed in element.
idNav.prototype.setFocusFromVar = function(r) {
document.activeInputArea = r; // my variable for tracking focus
r.focus(); // error happens here (line 274 of idNav.js)
r.select();
}
該錯誤發生在r.focus行。
在我調用該方法的兩個地方,我在調用者中使用與局部變量r類似的模式。
if (!r)
return;
this.setFocusFromVar(r);
但仍然錯誤仍然存在。當r不爲空或未定義時,它是我網頁上表格中的輸入元素。
我繼續得到r未定義在idNav.js的行274上,這是r.focus行。該方法的所有調用者都位於同一個js文件中。
我錯過了什麼?
這個錯誤是在Firefox中間歇性地發生的,我沒有在IE中測試過這個特定的錯誤。
EDTA: [R確實顯示爲未定義和錯誤顯示的堆棧跟蹤:
setFocusFromVar()(undefined)IDNav.js (line 275)
dhandler(Object originalEvent=Event keydown type=keydown)IDNav.js (line 100)
newTrigger()(Object originalEvent=Event keydown type=keydown)jquery.hotkeys.js (line 1)
F()()jquery.js (line 19)
F()(Object originalEvent=Event keydown type=keydown)jquery.js (line 19)
F()()jquery.js (line 19)
[Break on this error] r.focus();
dhandler是我檢查出來,似乎是不錯的(沒有問題)的方法之一。 我會再看一看,但請確定:
它用於處理向下箭頭和輸入鍵通過我的輸入元素表導航。
如果在調用r.focus()之前嘗試「alert(r)」(或檢查Firebug中的變量),結果如何? – 2009-05-28 14:49:11
我會試着放入一個警報。它很難在Firebug中檢查它,因爲如果我放置一個斷點,我不得不按下繼續所有的時間通話不會失敗。 – 2009-05-28 14:57:02
螢火蟲的堆棧軌跡是什麼?有另外一個地方叫你忘了嗎? (以及爲什麼不添加if(!r)返回;在setFocusFromVar() – 2009-05-28 14:58:44