我试图在函数外部使用变量。
我已经在函数之前定义了变量,但是当我尝试输出它时,我得到一个NaN(变量是一个值)。
以下是我的代码,这是jsfiddle。
$(function() {
// inital values
var total = $("#total").val("0");
// slider A
$( "#pricea" ).slider({
value:0,
min: 0,
max: 500,
step: 50,
slide: function(event, ui) {
$("#pricea").val(ui.value);
var aaa = $("#pricea").val();
var bbb = $("#priceb").val();
var total = $("#total").val(+aaa + +bbb);
}
});
// slider B
$( "#priceb" ).slider({
value:0,
min: 0,
max: 500,
step: 50,
slide: function(event, ui) {
$("#pricea").val(ui.value);
var aaa = $("#pricea").val();
var bbb = $("#priceb").val();
var total = $("#total").val(+aaa + +bbb);
}
});
$("#totalplus").val(+total + 10);
});
变量是var total
。我试图用元素#totalplus
输出它。
答案 0 :(得分:2)
您必须了解,通过使用var
关键字,您将两个幻灯片函数范围内的变量total
重新定义为局部变量。设置变量值不会对这些函数之外的外部范围变量total
产生任何影响。
如果省略函数内的var
关键字,则应该可以访问函数之外的值。
但是:回调函数具有异步性质,因此最后一行代码很可能会在回调内的值发生变化之前执行。
解决方案:您想要对total
的更改值执行的操作必须在回调内部完成(包括输出值)。
答案 1 :(得分:1)
你的总变量包含一个jquery对象,而不是值本身,因此它不是一个数字。
你必须在最后一行使用total.val()值,如下所示:
$("#totalplus").val(parseInt(total.val()) + 10);
然后您可以在两个幻灯片事件结束时添加相同的行。
此外,正如devnull69所述,您不必重新定义总变量。
这是一个更新的jsfiddle:http://jsfiddle.net/8R7NW/1/