2013-05-17 59 views
1

我寫了類似下面的內容。用的onclick DIV ID的 「PLUS」 我 正在以下錯誤:錯誤:無法在初始化之前調用滑塊上的方法嘗試調用方法'值'

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> 

任何幫助表示讚賞。

+1

請分享必要的HTML的其餘部分如元素'「.slider‘''’#滑蓋結果」'等 –

回答

3

你在初始化時使用$(".slider").slider()$("#slider-result").slider()在得到一些插件的選擇工作的價值已在初始化時所用的時間,所以嘗試。

0

我有類似的問題。 這裏

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

您的塊只是不停地在

create: function(event, ui) {} 

即。

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

希望這能奏效。

+0

事件處理程序初始化滑塊和滑塊初始化腳本如下不是異步的,所以只有在滑塊創建後纔會添加,這不是問題。順便說一句,你的答案中有語法錯誤'var value = ui.value; ,步驟' –

1

的錯誤造成的,因爲$("#slider-result")沒有初始化爲滑塊的元素,你想就可以執行的,而不是$(".slider")這是實際的滑動滑塊控件的方法。

你的代碼應該是

$(".PLUS").click(function() { 
    var value = $(".slider").slider("value"), 
    step = $(".slider").slider("option", "step"); 
    $("#slider-result").text(value + step); 
//---- maybe you'll need to ----^---- parseInt() the values here 
}); 
4

如果我們詳細檢查錯誤,你會發現,它說你企圖滑塊插件的初始化之前調用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> 

我希望這將有助於你/人。

問候,

相關問題