我一直认为,如果你在一个函数之外声明了一个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
答案 0 :(得分:1)
tween
在您对$(document).ready
的调用中使用的内联函数中定义。因此,它不在get_value
范围内。
如果您从同一个get_value
处理程序中定义了ready
,那么它会看到该变量。或者,如果您将tween
移动到其ready
处理程序之外,那么它是全局的,那么也可以看到它。就像现在一样,它处于一个完全独立的范围内。