使用kineticjs的未定义的javascript变量

时间:2013-10-23 19:18:37

标签: javascript kineticjs

我一直认为,如果你在一个函数之外声明了一个javascript var,那么它就可以在该函数中使用并在你需要的时候使用它。

我遇到下面的代码问题,当我点击一个触发get_value函数的按钮时,控制台告诉我补间变量是未定义的。

    <script>
        $(document).ready(function() 
        {
            var timeout_val = 0;

            var stage = new Kinetic.Stage({
                container: 'stage',
                width: 940,
                height: 50
            });
            var layer = new Kinetic.Layer();

            var line = new Kinetic.Line({
                points: [10, 10, 100, 10],
                stroke: '#FF0000'
            });

            layer.add(line);
            stage.add(layer);

            var xTo = stage.getWidth() - 10;

            var tween = new Kinetic.Tween({
                node: line,
                duration: 5,
                points: [10, 10, xTo, 10]
            });
        });

        function get_value(){
            $.ajax({
                type: "GET",
                url: "players.php",
                data: {}
            }).done(function( result ) {
                if (result != "Timeout Error") {
                    $("#players").html(result);
                }
                $("table").tablesorter({widgets: ["zebra"], sortList: [[1,1], [0,0]]});
                timeout_val = window.setTimeout(get_value, 5000);
            });
            tween.reset();
            tween.play();
        }
    </script>

这个脚本块位于我页面的头部,如果这有任何区别的话。

然后我用一个像这样写的简单输入按钮来调用get_value函数。

<input type="button" name="submit" id="submit" value="submit" onClick = "get_value();" />

我不知道为什么这不起作用,如果你能请我启发

谢谢 Crouz

1 个答案:

答案 0 :(得分:1)

tween在您对$(document).ready的调用中使用的内联函数中定义。因此,它不在get_value范围内。

如果您从同一个get_value处理程序中定义了ready,那么它会看到该变量。或者,如果您将tween移动到其ready处理程序之外,那么它是全局的,那么也可以看到它。就像现在一样,它处于一个完全独立的范围内。