3 回答

TA貢獻1796條經(jīng)驗 獲得超4個贊
您可以執(zhí)行以下操作:
window.onload = function() {
var container = document.getElementsByClassName('slidecontainer')[0];
var slider = document.createElement("input");
slider.type = 'range';
slider.value = 56;
container.prepend(slider);
var output = document.getElementById("demo");
output.innerHTML = slider.value;
slider.oninput = function() {
output.innerHTML = this.value;
}
}
<div class="slidecontainer">
<p>Value: <span id="demo"></span></p>
</div>
當心!您必須將創(chuàng)建的元素添加到容器中,否則那里沒有元素。有關更高級的onload方法,請參閱此主題
我希望它有幫助:)
編輯:
我認為您必須在 for 循環(huán)之外附加事件并指定哪個元素必須具有什么功能。我用下面的代碼片段來做到這一點:
window.onload = function() {
function addClass(element, class_name) {
arr = element.className.split(" ");
if (arr.indexOf(name) == -1) {
element.className += " " + class_name;
}
}
var titles = ["demo1", "demo2", "demo3"];
for (var i = 0; i < titles.length; i++) {
var container = document.getElementsByClassName('slidecontainer')[0];
var slider = document.createElement("input");
slider.type = 'range';
slider.value = Math.random() * 100;
slider.setAttribute('data-lable-id', titles[i]);
addClass(slider, 'range-sliders');
container.prepend(slider);
container.innerHTML += ("<p>Value: <span id=" + titles[i] + "></span></p>")
var output = document.getElementById(titles[i]);
output.innerHTML = slider.value;
}
var sliders = document.getElementsByClassName('range-sliders');
var i;
for (i = 0; i < sliders.length; i++) {
(function(i) {
var lbl_id = sliders[i].getAttribute('data-lable-id');
if (lbl_id) {
sliders[i].oninput = function() {
document.getElementById(lbl_id).innerHTML = this.value;
};
}
})(i);
}
}
<div class="slidecontainer">
</div>

TA貢獻1852條經(jīng)驗 獲得超7個贊
在添加事件偵聽器之前等待窗口加載
window.onload = function() {
var slider = document.getElementById("myRange");
var output = document.getElementById("demo");
output.innerHTML = slider.value;
slider.oninput = function() {
output.innerHTML = this.value;
}
}

TA貢獻1864條經(jīng)驗 獲得超6個贊
根據(jù)您的編輯,這是您的答案:
window.onload = function() {
document.querySelectorAll(".slidecontainer").forEach(function(element) {
var slider = [...element.children].filter(x=> x.tagName == "INPUT")[0];
var output = [...element.children].filter(x=> x.tagName == "P")[0];
slider.oninput = function() {
output.innerHTML = this.value;
}
});
}
代碼會找到每個有類的 divslidecontainer并且它會取第一個輸入和第一個 p 元素,其余的代碼是一樣的
更好的代碼和 div 是:
<div class="slidecontainer">
<input class="slider" type="range" min="1" max="100" value="50" class="slider" id="myRange">
<br>
<span>Value:</span><span class="slider-value"></span>
</div>
<script>
window.onload = function() {
document.querySelectorAll(".slidecontainer").forEach(function(element) {
var slider = [...element.children].filter(x=> x.className == "slider")[0];
var output = [...element.children].filter(x=> x.className == "slider-value")[0];
slider.oninput = function() {
output.innerHTML = this.value;
}
});
}
</script>
此代碼將查找slidecontainerdiv 并檢查具有slider類的輸入并將輸入值寫入具有slider-value類的元素
添加回答
舉報