0

我一直认为,如果你在函数之外声明了一个 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();" />

我不知道为什么这不起作用,如果你能告诉我

谢谢克鲁兹

4

1 回答 1

1

tween在调用$(document).ready. 因此不在适用范围内get_value

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

于 2013-10-23T19:21:32.643 回答