javascript - 在函数内执行 javascript 函数

标签 javascript scope kineticjs local-variables

这个问题涉及kineticJS,但我认为问题是关于嵌套函数的基本逻辑。我在 div 上有一个 Kineticjs 舞台:

<div id="container"></div>

kineticjs 脚本在舞台上放置了一个形状:

function displayVizualization(){
    //SKETCH SIZE
    var SKETCH_WIDTH = 800;
    var SKETCH_HEIGTH = 800;


    var stage = new Kinetic.Stage({
        container: document.getElementById('container'),
        width: SKETCH_WIDTH,
        height: SKETCH_HEIGTH
    });
    var layer = new Kinetic.Layer();

    var rect = new Kinetic.Rect({
        x: 239,
        y: 75,
        width: 100,
        height: 50,
        fill: 'green',
        stroke: 'black',
        strokeWidth: 4
    });

    // add the shape to the layer
    layer.add(rect);

    // add the layer to the stage
    stage.add(layer);

    function updateViz(){
        console.log("we are in the updateViz function")
        var count = document.getElementById("formID:counter").value;
        console.log("count is: "+count);
        rect.transitionTo({
            x: 100*count,
            duration: 2,
            easing: easing
        });
    }
}

我需要在 oncomplete 属性中从此页面上的另一个脚本调用函数“updateViz”。我有话要说:

oncomplete: updateViz();

但是,我当然得到了“函数未定义”错误,因为 updateViz() 嵌套在 displayVizualization() 中。

那么我应该如何调用 updateViz() 呢?谢谢!

[编辑:将 updateViz() 移到 displayVisualization() 之外对我来说完全没问题。但是请解释一下updateViz中的变量应该如何引用displayVisualization中的变量?]

最佳答案

如果上面的代码片段作为单独的 js 文件加载,您可以为容器函数分配一个变量并返回对函数的引用

var displayVizualization = function (){
...
return { updateViz:updateViz }
}

现在您可以使用调用此函数 updateViz

displayVizualization.updateViz()

关于javascript - 在函数内执行 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13307532/

相关文章:

javascript - 如何使用 WebDriver.io 将复选框设置为 true

javascript - 在函数内设置全局范围变量

javascript - 如何在函数中访问数组?

javascript - 使用 JavaScript 和 KineticJS 库在 HTML5 Canvas 上以 'grid' 布局绘制图像

javascript - 可拖动的人物与随机静态人物的碰撞

javascript - 从函数参数中获取图像名称

javascript - 局部变量到全局javascript

javascript - 如何让两个不相关的 React 组件一起工作?

javascript - Meteor 中的全局变量

html - 如何制作 KineticJs 自定义形状