Javascript 如何在jQuery小部件中使用动态属性值

Javascript 如何在jQuery小部件中使用动态属性值,javascript,jquery,html,jquery-ui,global-object,Javascript,Jquery,Html,Jquery Ui,Global Object,我有一个javascript,每当我从下拉菜单中选择一个选项时,它都会返回一个值 $(document).ready(function() { function calculateVals() { //dropdown menus var valuestart = $("select[name='timestart']").val(); var valuestop = $("selec

我有一个javascript,每当我从下拉菜单中选择一个选项时,它都会返回一个值

   $(document).ready(function() {
        function calculateVals() { 
            //dropdown menus      
             var valuestart = $("select[name='timestart']").val();
             var valuestop = $("select[name='timestop']").val();

             //create date format          
             var timeStart = new Date("01/01/2007 " + valuestart).getHours();
             var timeEnd = new Date("01/01/2007 " + valuestop).getHours();

             var hourDiff = timeEnd - timeStart;                         

             return hourDiff;  

        }
        $("select").change(calculateVals);
        calculateVals();
    });
上面的脚本返回一个数字,我需要将其添加到下面的jquery插件中。我需要将其添加到max选项中,但我得到的错误是calculateVal未定义

尝试在就绪块外定义函数:

function calculateVals() { 

             //code here...

             return someResult;                                          
}



$(document).ready(function() {
    $("select").change(calculateVals);
    calculateVals();
});
尝试在就绪块外定义函数:

function calculateVals() { 

             //code here...

             return someResult;                                          
}



$(document).ready(function() {
    $("select").change(calculateVals);
    calculateVals();
});

将函数移到全局范围:

function calculateVals() {       
    //code here...
    return someResult;                                           
}

$(document).ready(function() {
        $("select").change(calculateVals);
    calculateVals();
});
更好的是,当您误用DOM ready时,了解它的含义

您应该只有一个就绪处理程序。 应该只存在与DOM元素相关的代码。 更新:

稍后,您可以使用以下方法更改滑块最大值:

$( "#slider").slider("option", "max", calculateVals());

将函数移到全局范围:

function calculateVals() {       
    //code here...
    return someResult;                                           
}

$(document).ready(function() {
        $("select").change(calculateVals);
    calculateVals();
});
更好的是,当您误用DOM ready时,了解它的含义

您应该只有一个就绪处理程序。 应该只存在与DOM元素相关的代码。 更新:

稍后,您可以使用以下方法更改滑块最大值:

$( "#slider").slider("option", "max", calculateVals());

谢谢,我试过了。我没有得到一个错误,但当我点击选择菜单时什么也没有发生。someResult应该返回一个数字,这个数字应该会在更改时发生一些事情。谢谢我尝试了。我没有得到一个错误,但当我点击选择菜单时什么也没有发生。someResult应返回一个数字,该数字应能使更改发生。@gdoron谢谢,我没有看到它haha@gdoron谢谢,我看不出来,但是谢谢你!是否需要一些额外的代码来实现这一点?当我点击我的下拉菜单并选择一个选项时,什么也没发生。@CyberJunkie。我感觉你的问题就在这里//代码在这里…:不管怎样,我不知道你称之为动态,也不知道当前的问题到底是什么。你说得对!我在答案中添加了缺少的代码。它计算我从2个下拉菜单中选择的2次之间的小时差,并返回结果。我试图在max选项中将结果添加到jquery函数中,它改变了一个滑块。该函数仅在我加载page@CyberJunkie. 以后可以使用$slider.slideroption,max,calculateVals更改滑块最大值;你是说像这样吗$select.changefunction{$slider.slideroption,max,calculateTime;};我试过了,但没有成功。谢谢!是否需要一些额外的代码来实现这一点?当我点击我的下拉菜单并选择一个选项时,什么也没发生。@CyberJunkie。我感觉你的问题就在这里//代码在这里…:不管怎样,我不知道你称之为动态,也不知道当前的问题到底是什么。你说得对!我在答案中添加了缺少的代码。它计算我从2个下拉菜单中选择的2次之间的小时差,并返回结果。我试图在max选项中将结果添加到jquery函数中,它改变了一个滑块。该函数仅在我加载page@CyberJunkie. 以后可以使用$slider.slideroption,max,calculateVals更改滑块最大值;你是说像这样吗$select.changefunction{$slider.slideroption,max,calculateTime;};我试过了,但没有成功。。