JS函数如何/为什么不能'不能在代码中执行,但在chrome控制台中运行良好

How/Why a JS function couldn't be executed in code but works fine in chrome console?

本文关键字:不能 但在 执行 chrome 运行 控制台 代码 函数 为什么 JS      更新时间:2024-04-15

我正在使用timemap API开发一个JavaScript项目:http://timemap.googlecode.com我想在时间轴上设置日期限制,看了一眼文档后,我的时间轴卷轴上有一个监听器:

EDIT:是的,band是全局变量,在函数之前定义,当我执行这个代码时

编辑:如果这有帮助的话,我将从我的html页面的head标签执行这段代码。

    band.addOnScrollListener(function() {
    if (band.getMaxVisibleDate() > band.maxDateLimit) {
        console.log("Too fare");
        band.setMaxVisibleDate(new Date());
    } else if (band.getMinVisibleDate() < band.minDateLimit) {
        console.log("Too fare");
        band.setMinVisibleDate(new Date());
    } else {
        console.log("Fine");
    } 

在滚动时,我有一条很好的消息,可以切换时间线中的位置:"too fare"或"fine",但后面的一行似乎永远不会在滚动包上执行。如果我在谷歌chrome控制台中复制这条完全相同的行,它会很好地完成任务,并将时间线集中在今天。

EDIT:我也尝试在setMaxVisibleDate函数中执行console.log,这一次显示在我的时间线位置被重新定义的情况下:当我在chrome控制台中调用该方法时。如果我总是在控制台中键入band._onScrollListeners,它将显示上述功能。

我相信你们会通过这些快速的解释找到答案,但我只是想知道你们中的一些人是否已经遇到了类似的问题(我相信你们已经遇到了),这可能是什么原因,不用说我对JavaScript还很陌生,所以这可能是我犯的一个明显的错误,但我找不到。

我发现setMaxVisibleDatesetMinVisibleDate中有一个if,只有当用户在调用时没有滚动时间线时,它才允许更改,所以我删除了它,它就工作了。

但我不明白为什么API的文档告诉在onScroll事件中调用该方法,如果它在滚动时没有做出任何更改,那完全是愚蠢的,还是我没有很好地理解一些事情?