2017-06-18 104 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