错误:无法在初始化之前调用滑块上的方法尝试调用方法'value'

Ris*_*kar 3 javascript jquery jquery-ui jquery-ui-slider

我写了类似下面的内容.点击ID为"PLUS"的div,我收到以下错误:

cannot call methods on slider prior to initialization attempted to call method 'value'

<div id="PLUS" class="PLUS"></div>
<script>
  $(function() {
    $(".slider").slider({
      animate: true,
      range: "min",
      value: 18,
      min: 18,
      max: 70,
      step: 1,
      slide: function(event, ui) {
        $("#slider-result").html(ui.value);
        document.getElementById(findElement('ageId')).value = ui.value;
      },
      //this updates the hidden form field so we can submit the data using a form
      change: function(event, ui) {
        $('#hidden').attr('value', ui.value);
      }
    });

    $(".PLUS").click(function() {
      var value = $("#slider-result").slider("value"),
        step = $("#slider-result").slider("option", "step");
      $("#slider-result").slider("value", value + step);
    });

  });
</script>
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

Meh*_*ood 5

如果我们详细检查错误,你会发现它说你试图value滑块插件初始化之前调用该方法.

原因:

实际上JavaScript是一种解释型语言,它不会等待第一个命令执行和完成.这就是为什么你 $(".slider").slider({$(".PLUS").click(function() {线路同时运行并发生错误的原因.

解:

您可以在setTimeout此处将代码置于函数中,如下所示.

<script>
  $(function() {
    $(".slider").slider({
      animate: true,
      range: "min",
      value: 18,
      min: 18,
      max: 70,
      step: 1,
      slide: function(event, ui) {
        $("#slider-result").html(ui.value);
        document.getElementById(findElement('ageId')).value = ui.value;
      },
      //this updates the hidden form field so we can submit the data using a form
      change: function(event, ui) {
        $('#hidden').attr('value', ui.value);
      }
    });

    setTimeout(function(){
      $(".PLUS").click(function() {
        var value = $("#slider-result").slider("value"),
          step = $("#slider-result").slider("option", "step");
        $("#slider-result").slider("value", value + step);
      });
    },200); // 200 = 0.2 seconds = 200 miliseconds

  });
</script>
Run Code Online (Sandbox Code Playgroud)

我希望这会对你/某人有所帮助.

问候,