"未捕获的类型错误:未定义的不是函数“;在我的Google Chrome JavaScript控制台中
"Uncaught TypeError: undefined is not a function" in my Google Chrome JavaScript console
所以我知道上面的错误意味着我的浏览器无法识别我试图调用的函数。我的问题是,为什么在我的特殊情况下会发生这种情况。我会发布相关代码,也许你们能帮我。
我有一个功能
function homepage_screensaver()
{
// ... bunch of lines here ....
var circwrapper = new Array(mycirc, theta);
document.setInterval(move_obj(circwrapper, papwidth, papheight), 100);
}
正如你所看到的,它调用了我现在正在构建的另一个函数:
function move_obj(obwrap, bckwid, bckht)
{
var c = obwrap[1];
var t = obwrap[2];
var bb = c.getBBox();
// ... bunch of lines here ...
}
我收到的错误在var bb = c.getBBox();
线上。
我有预感。我认为这个问题与我试图将对象包装在数组中,然后打开包装并调用其上的函数有关。也许浏览器找不到对象的成员函数,因为它根本不知道它是什么类型的对象。
(我知道我创建了一个包装类在功能上是无用的,但这是为了我自己的可读性。)
不管怎样,这里的解决方案是什么?
您的问题只是obwrap[1]
(函数外的theta
)没有getBBox
属性。您可能打算访问obwrap[0]
(即mycirc
)。此外,您的数组没有索引2
,因此下面的行可能应该改为obwrap[1]
。
然而,一旦你解决了这个问题,你的代码就会立即在另一个地方出现另一个问题:
按照当前编写代码的方式,setInterval
将尝试调用move_obj(circwrapper, papwidth, papheight)
返回的结果。您的代码与相同
var result_of_move_obj = move_obj(circwrapper, papwidth, papheight);
setInterval(result_of_move_obj, 100);
注意,move_obj
只被调用一次,然后move_obj
的结果在此后被周期性地调用。
如果move_obj
函数以return undefined;
结束(或者没有return
语句,这是一样的),那么setInterval
将尝试调用undefined
,这显然是行不通的。
相反,您希望将调用封装在一个匿名函数中:
setInterval(function() { move_obj(circwrapper, papwidth, papheight) }, 100);
相关文章:
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- 使用JAVASCRIPT转换货币.可以't通过我的函数设置转换后的输入文本字段的值
- 为什么我的函数没有被调用呢
- 为什么我的函数没有返回准确的计数
- 我的函数返回“未定义”
- 用我的函数jquery给出数据/参数
- 从未达到我的函数调用-ReactJs 0.12.0
- 我的函数不会返回要保存在数组中的对象
- 为什么点击或更改事件都没有触发我的函数
- 为什么如果我的函数中的范围被 javascript 解释器完全忽略了
- 我的函数调用在回显中不起作用
- 我的函数返回空.为什么
- 我的函数不起作用,Ajax调用,JQuery,调用外部?我不知道
- 如何在我的函数中使用 .bind()
- 在jQuery中,我的函数不起作用
- 为什么不是'我的函数未按预期在文档加载时运行
- 传递的变量不适用于我的函数-Javascript
- jQuery:我的函数需要一个反垃圾邮件
- 为什么不是't调用我的函数
- 为什么我的函数参数说是未定义的