Javascript 从不同函数访问变量

Javascript 从不同函数访问变量,javascript,jquery,Javascript,Jquery,我有两个变量let bonus和let itemlevel2,我想在函数getResponse中使用它们。 itemlevel2变量是滑块的当前选定值 目前,我只能在getResponse函数中使用itemlevel2变量,但无法访问bonus变量 如何在getResponse函数中正确使用这两个变量 jQuery(function ($) { $(function () { $("#slider-vertical").slider({

我有两个变量
let bonus
let itemlevel2
,我想在函数
getResponse
中使用它们。
itemlevel2
变量是滑块的当前选定值

目前,我只能在getResponse函数中使用
itemlevel2
变量,但无法访问
bonus
变量

如何在getResponse函数中正确使用这两个变量

jQuery(function ($) {

    $(function () {   
        $("#slider-vertical").slider({
            orientation: "horizontal",
            range: "min",
            min: 0,
            slide: function (event, ui) {
                $("#amount").val(ui.value);
            },
        });

        getResponse(0);
        $('ul#menu li').click(function () {
            let bonus = $(this).attr("value");
            getResponse(bonus);
        });

        $('#slider-vertical').on('slide', function (event, ui) {
            let itemlevel2 = $("#slider-vertical").slider("value");
            getResponse(itemlevel2);
        });

    });

    function getResponse(itemlevel2, bonus) {
        $.ajax({
            type: "GET",
            cache: "true",
            url: "itemscript.php",
            data: {
                "bonus": bonus,
                "itemlevel": itemlevel2
            },
            success: function (data) {
                $('.item-content').html('<div class="tooltipitem-site"><div class="ui-tooltip-site">' + data + '</div></div>');

            }
        });
    }
});
jQuery(函数($){
$(函数(){
$(“#滑块垂直”)。滑块({
方向:“水平”,
射程:“分钟”,
分:0,,
幻灯片:功能(事件、用户界面){
美元(“#金额”).val(ui.value);
},
});
getResponse(0);
$('ul#menu li')。单击(函数(){
let bonus=$(this.attr(“value”);
获得响应(奖金);
});
$(“#滑块垂直”)。打开('slide',函数(事件,用户界面){
让itemlevel2=$(#滑块垂直”)。滑块(“值”);
getResponse(itemlevel2);
});
});
函数getResponse(itemlevel2,奖金){
$.ajax({
键入:“获取”,
缓存:“真”,
url:“itemscript.php”,
数据:{
“奖金”:奖金,
“itemlevel”:itemlevel2
},
成功:功能(数据){
$('.item content').html(''+数据+'');
}
});
}
});

实现这一点的一种方法是反转依赖关系,以便
getResponse()
函数负责从DOM检索所需的信息

这样可以避免在不同时间设置
奖金
itemlevel2
值的“异步”问题,也不需要任何全局变量。试试这个:

jQuery($=>{
$(“#滑块垂直”)。滑块({
方向:“水平”,
射程:“分钟”,
分:0,,
幻灯片:功能(事件、用户界面){
美元(“#金额”).val(ui.value);
},
});
getResponse(0);
让$li=$('ul#menu li')。在('click',function()上{
//在单击的元素上设置一个类,以便以后能够读取其属性
$li.removeClass('active');
$(this.addClass('active');
getResponse();
});
$(“#滑块垂直”)。on('slide',getResponse);
});
函数getResponse(){
让奖金=$('ul#menu li.active').attr('value');
让itemlevel2=$(#滑块垂直”)。滑块(“值”);
$.ajax({
键入:“获取”,
缓存:“真”,
url:“itemscript.php”,
数据:{
“奖金”:奖金,
“itemlevel”:itemlevel2
},
成功:功能(数据){
$('.item content').html(''+数据+'');
}
});
}

作为旁注,您的代码意味着
li
有一个
value
属性,该属性不是有效的HTML。如果您想在DOM中的元素上存储自定义元数据,请使用
数据
属性,例如
数据值

您的
getResponse
函数需要两个参数(
itemlevel2
bonus
),但您总是只传递第一个参数来调用它。