0

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', {
	formatter: function(value) {
		return 'Current value: ' + value;
	}
});
#ex1Slider .slider-selection {
	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>

问题:单击事件 javascript 上不显示引导滑块

说明: 如果我取消隐藏滑块 HTML 代码(没有 onlclick 事件)它工作正常但是当我加载基于 onlclick 按钮滑块不显示时,只显示输入框

4

1 回答 1

0

您的 javascript 有一个主要缺陷:

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

您的代码中没有任何内容会发生这种情况,页面将尝试在具有 id 的元素#ex1存在之前运行 JS,因为它将在页面加载时运行。一旦你完成了点击事件,就没有任何东西告诉它把滑块与它关联起来。您需要使用回调。试试下面的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;
    }
});
}
于 2017-10-22T05:38:50.483 回答