2017-06-18 40 views
0

我想在一個帶有this bootstrap api的html文件中創建一個滑塊,但它一直顯示`jquery-3.1.1.slim.min.js:2 jQuery.Deferred異常:$(。 ..)滑塊不是一個函數類型錯誤:jQuery調用「Slider」函數失敗

$(...).Slider is not a function 
    at HTMLDocument.<anonymous> (file:///Users/apple/Desktop/pjt/index.html:35:18) 
    at j (https://code.jquery.com/jquery-3.1.1.slim.min.js:2:30164) 
    at k (https://code.jquery.com/jquery-3.1.1.slim.min.js:2:30478) undefined 
r.Deferred.exceptionHook @ jquery-3.1.1.slim.min.js:2 
k @ jquery-3.1.1.slim.min.js:2 
jquery-3.1.1.slim.min.js:2 Uncaught TypeError: $(...).Slider is not a function 
    at HTMLDocument.<anonymous> (index.html:35) 
    at j (jquery-3.1.1.slim.min.js:2) 
    at k (jquery-3.1.1.slim.min.js:2)` 

我下載了兩個JS和CSS文件從here

這是我的代碼:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="UTF-8"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 
    <link rel="stylesheet" href="assets/css/bootstrap-slider.css"> 
    <link rel="stylesheet" href="assets/css/style.css"> 

    </head> 

    <body> 
     <header class="nav-header"> 
    </header> 
    <div class="container"> 
     <div class="row"> 
     <div class="left_section"> 
      <input id="ex6" type="text" data-slider-min="-5" data-slider-max="20" data-slider-step="1" data-slider-value="3"/> 
<span id="ex6CurrentSliderValLabel">Current Slider Value: <span id="ex6SliderVal">3</span></span> 
     </div> 
     <div class="middle_section"> 
     </div> 
     <div class="right_section"> 
     </div> 
     </div> 
    </div> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script> 
    <script src="assets/js/bootstrap-slider.js"></script> 
    <script> 
    $(document).ready(function() { 
     $("#ex6").Slider(); // I also tried .slider() 
     $("#ex6").on("slide", function(slideEvt) { 
      $("#ex6SliderVal").text(slideEvt.value); 
     }); 

    }) 

    </script> 
     </body> 


</html> 

我還試圖用CDN來替換本地js和css,但沒有任何變化

+0

源'slider'不'Slider' –

+0

我都嘗試,但問題仍然存在 – Deidara

+0

我發佈了一個naswer。請仔細記 –

回答

1

slider documentation - 您有2種方法來使用它

var mySlider = new Slider('#ex6'); 

OR

$('#ex6').slider(); 

工作示例使用.slider

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <meta charset="UTF-8"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 
 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/9.8.0/css/bootstrap-slider.css"> 
 
    <link rel="stylesheet" href="assets/css/style.css"> 
 

 
    </head> 
 

 
    <body> 
 
     <header class="nav-header"> 
 
    </header> 
 
    <div class="container"> 
 
     <div class="row"> 
 
     <div class="left_section"> 
 
      <input id="ex6" type="text" data-slider-min="-5" data-slider-max="20" data-slider-step="1" data-slider-value="3"/> 
 
<span id="ex6CurrentSliderValLabel">Current Slider Value: <span id="ex6SliderVal">3</span></span> 
 
     </div> 
 
     <div class="middle_section"> 
 
     </div> 
 
     <div class="right_section"> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/9.8.0/bootstrap-slider.js"></script> 
 
    <script> 
 
    $(document).ready(function() { 
 
     $('#ex6').slider(); 
 
     $("#ex6").on("slide", function(slideEvt) { 
 
      $("#ex6SliderVal").text(slideEvt.value); 
 
     }); 
 

 
    }) 
 

 
    </script> 
 
     </body> 
 

 

 
</html>

工作示例使用var myslider = new Slider('#ex6')

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <meta charset="UTF-8"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> 
 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/9.8.0/css/bootstrap-slider.css"> 
 
    <link rel="stylesheet" href="assets/css/style.css"> 
 

 
    </head> 
 

 
    <body> 
 
     <header class="nav-header"> 
 
    </header> 
 
    <div class="container"> 
 
     <div class="row"> 
 
     <div class="left_section"> 
 
      <input id="ex6" type="text" data-slider-min="-5" data-slider-max="20" data-slider-step="1" data-slider-value="3"/> 
 
<span id="ex6CurrentSliderValLabel">Current Slider Value: <span id="ex6SliderVal">3</span></span> 
 
     </div> 
 
     <div class="middle_section"> 
 
     </div> 
 
     <div class="right_section"> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/9.8.0/bootstrap-slider.js"></script> 
 
    <script> 
 
    $(document).ready(function() { 
 
     var mySlider = new Slider('#ex6'); 
 
     $("#ex6").on("slide", function(slideEvt) { 
 
      $("#ex6SliderVal").text(slideEvt.value); 
 
     }); 
 

 
    }) 
 

 
    </script> 
 
     </body> 
 

 

 
</html>

Note: On my examples I used slider CDN so if your code not working with your css , js paths you can use CDN instead or check your paths

+0

嗨,當我在瀏覽器中測試我的代碼時,就像你所做的一樣,它工作正常,但是當我將相同的代碼複製到基於[電子]的應用程序中時(https://electron.atom .io),它無法識別滑塊功能,這真的很奇怪。 – Deidara

+0

好的問題解決了謝謝你寫這個 – Deidara

+0

@Deidara很高興聽到這個..有一個美好的一天:-) –

0

你的腳本加載之前callig功能。

包裝你的代碼。

<script> 
$(document).ready(function() { 
    $("#ex6").Slider(); 
    $("#ex6").on("slide", function(slideEvt) { 
     $("#ex6SliderVal").text(slideEvt.value); 
    }); 

}) 

</script> 
+0

喜讀它,問題依然存在。我更新了問題描述。 – Deidara

+0

您應該使用: $(「#ex6」)。滑塊({}); 如果這不起作用,請嘗試將它放在瀏覽器控制檯上。如果在從控制檯調用時顯示錯誤,則說明您正在導入的文件存在問題。 –

0

寫滑塊代替滑塊

$("#ex6").slider();

,並確保bootstrap-slider.js文件放在文件夾assets/js/

+0

我試了兩種。問題依然存在 – Deidara

+0

好的。我也更新了我的答案 –

1

好吧,我不寫清楚我的問題道歉,所以問題不是從HTML文件,但是從框架,我的工作。

由於我使用的是electron,如果您只是加載html代碼,應用程序無法識別html中的js文件,除非您在腳本之前和之後添加以下代碼。

<!-- Insert this line above script imports --> 
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script> 

<!-- normal script imports etc --> 
<script src="scripts/jquery.min.js"></script>  
<script src="scripts/vendor.js"></script>  

<!-- Insert this line after script imports --> 
<script>if (window.module) module = window.module;</script> 

下面是該解決方案的這個issue