我有一个问题,即一个方法获取未定义的变量错误,即使我在调用前检查变量未定义。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