javascript
  • twitter-bootstrap
  • innerhtml
  • bootstrap-slider
  • 2017-10-22 3 views 0 likes 
    0

    Wie Bootstrap Schieber auf Basis auf Click-Ereignis (innerHTML- Javascript)

    function createslider(){ 
     
    document.getElementById("loadSlider").innerHTML='<input id="ex1" data-slider-id="ex1Slider" type="text" data-slider-min="0" data-slider-max="20" data-slider-step="1" data-slider-value="14"/>'; 
     
    } 
     
    
     
    
     
    // Without JQuery 
     
    var slider = new Slider('#ex1', { 
     
    \t formatter: function(value) { 
     
    \t \t return 'Current value: ' + value; 
     
    \t } 
     
    });
    #ex1Slider .slider-selection { 
     
    \t background: #BABABA; 
     
    }
    <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/9.9.0/css/bootstrap-slider.css" rel="stylesheet"/> 
     
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/9.9.0/bootstrap-slider.min.js"></script> 
     
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-slider/9.9.0/bootstrap-slider.js"></script> 
     
    
     
    
     
    <button onclick="createslider()"> Click me</button> 
     
    
     
    
     
    <div id="loadSlider"> 
     
    <!-- 
     
    <input id="ex1" data-slider-id='ex1Slider' type="text" data-slider-min="0" data-slider-max="20" data-slider-step="1" data-slider-value="14"/>--> 
     
    
     
    </div>

    Problem laden: Bootstrap Slider wird nicht angezeigt auf Click-Ereignis javascript

    Erklären: wenn i HTML-Code Schieberegler (ohne Onclick-Ereignis) funktioniert es gut, aber wenn ich Basis auf OnlClick laden Taste Schieberegler ist nicht nur Anzeige Eingabefeld ist Anzeige

    Antwort

    0

    Ihr Javascript hat eine große Schwachstelle:

    var slider = new Slider('#ex1', { 
        formatter: function(value) { 
         return 'Current value: ' + value; 
        } 
    }); 
    

    nichts in Ihrem Code nennt dies geschehen, wird die Seite versuchen, das JS vor dem Element mit der ID #ex1 existiert zu laufen, weil es beim Laden der Seite ausgeführt wird. Sobald Sie das Click-Ereignis ausführen, sagt ihm nichts, den Schieberegler damit zu verknüpfen. Sie müssen einen Rückruf verwenden. Versuchen Sie das folgende Javascript.

    function createslider(){ 
    document.getElementById("loadSlider").innerHTML='<input id="ex1" data-slider-id="ex1Slider" type="text" data-slider-min="0" data-slider-max="20" data-slider-step="1" data-slider-value="14"/>'; 
    addNewSlider(); // let the callback attach the new slider once the new node has been added to the dom 
    } 
    
    
    // Without JQuery 
    function addNewSlider() { // callback at work 
    var slider = new Slider('#ex1', { 
        formatter: function(value) { 
         return 'Current value: ' + value; 
        } 
    }); 
    } 
    
    Verwandte Themen