确保未调用javascript函数(如果已调用)

时间:2011-07-06 20:10:52

标签: javascript

我正在使用谷歌地图进行项目。我需要能够隐藏和显示多个地图。我不能单独使用基本的toggleDiv类型函数。这是因为当div被设置为display:none时,Google地图将忽略div的预期大小。 (无论出于何种原因,通过javascript切换它都没问题。)我可以使用GSize(宽度,高度),但它无法处理百分比。由于我需要100%,100%的地图,这不是一个选项。我找到了解决它的方法,即使用onClick调用第二个地图的函数,而不是使用body onLoad加载所有函数。但是,然后不保存地图的缩放,只是重新加载地图。

因此,我需要检查是否已调用某个函数,如果是,则不要回想它。我无法弄清楚如何做到这一点。任何帮助表示赞赏。

谢谢。

4 个答案:

答案 0 :(得分:7)

另一个“lazyvariant

var doOnce = function () {
    // do something

    doOnce = function () {}
}

至于原始问题,如果您要运行一次的功能是点击事件处理程序,那么您最好remove the click event listener

答案 1 :(得分:2)

如此定义变量。 var beenFired = false;

函数中的

执行此操作:

function myFunction()
{
    if(!beenFired)
    {
        //TODO FUNCTION
        beenFired = true;
    } 
}

那将检查是否还没有被解雇,如果没有解雇它。你甚至可以围绕函数调用本身来做。

if(!beenFired)
    myFunction()

function myFunction()
{
    //TODO FUNCTION
    beenFired = true;
}

答案 2 :(得分:1)

如果我理解:

var isCalled = false;

function f() {
  if (!isCalled) {
    isCalled = true;
    // ...
  }
}

答案 3 :(得分:1)

var func = (function(){
    var first = true;
    return function( a, b, c){
        if ( !first ){
            return;
        }
        first = false;

        console.log( arguments );
    }
})();

func( 1, 2, 3); // in console : [ 1, 2, 3]
func( 1, 1, 1); // nothing happens;