Jquery 变量的值不为´;不能传递给函数

Jquery 变量的值不为´;不能传递给函数,jquery,Jquery,我的问题是,值被正确地传递给变量,但我认为缺少了一些东西,因为当更改#sol的值时,动画时间不会改变。也许我得和你一起工作。关于(改变…?) $(function() { var speed = $('#sol').val(); $(document).on('click', '#engage', function(event){ var $anchor = $(this); $('html, body').stop().animate({

我的问题是,值被正确地传递给变量,但我认为缺少了一些东西,因为当更改#sol的值时,动画时间不会改变。也许我得和你一起工作。关于(改变…?)

$(function() {
var speed = $('#sol').val();
    $(document).on('click', '#engage', function(event){
        var $anchor = $(this);
        $('html, body').stop().animate({
            scrollLeft: $($anchor.attr('href')).offset().left
        }, speed);
        event.preventDefault();
    });
});


<form id="speed">
    <select id="sol" style="display:block;">
        <option value="800000">1</option>
        <option value="400000">2</option>
        <option value="200000">4</option>
        <option value="100000">8</option>
        <option value="50000">16</option>
        <option value="32000">25</option>
        <option value="16000">50</option>
        <option value="100000000000">100</option>
    </select>
</form>
$(函数(){
变量速度=$('#sol').val();
$(文档)。在('点击','参与')功能(事件){
var$anchor=$(此);
$('html,body').stop().animate({
滚动左:$($anchor.attr('href')).offset().left
},速度);
event.preventDefault();
});
});
1.
2.
4.
8.
16
25
50
100

#sol
元素的值和变量
速度
之间没有实时映射,这将导致在更改选择元素的值时更新变量的值

$(function () {
    var speed = $('#sol').val();

    $('#sol').change(function () {
        speed = $(this).val();
    });

    $(document).on('click', '#engage', function (event) {
        var $anchor = $(this);
        $('html, body').stop().animate({
            scrollLeft: $($anchor.attr('href')).offset().left
        }, speed);
        event.preventDefault();
    });
});
相反,当您希望在单击处理程序中使用select元素时,可以读取该元素的值

$(function () {
    $(document).on('click', '#engage', function (event) {
        var $anchor = $(this);
        $('html, body').stop().animate({
            scrollLeft: $($anchor.attr('href')).offset().left
        }, +$('#sol').val());
        event.preventDefault();
    });
});

另一个解决方案是使用更改处理程序,该处理程序将在变量发生更改时更新变量的值

$(function () {
    var speed = $('#sol').val();

    $('#sol').change(function () {
        speed = $(this).val();
    });

    $(document).on('click', '#engage', function (event) {
        var $anchor = $(this);
        $('html, body').stop().animate({
            scrollLeft: $($anchor.attr('href')).offset().left
        }, speed);
        event.preventDefault();
    });
});


问题您正在设置
速度
值,但没有使用更改的值更新它。

非常感谢,没有变量的解决方案可以正常工作,使用更改处理程序的解决方案不起作用。