3 回答
![?](http://img1.sycdn.imooc.com/54584c9c0001489602200220-100-100.jpg)
TA贡献1796条经验 获得超4个赞
您可以执行以下操作:
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>
当心!您必须将创建的元素添加到容器中,否则那里没有元素。有关更高级的onload方法,请参阅此主题
我希望它有帮助:)
编辑:
我认为您必须在 for 循环之外附加事件并指定哪个元素必须具有什么功能。我用下面的代码片段来做到这一点:
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>
![?](http://img1.sycdn.imooc.com/54586453000163bd02200220-100-100.jpg)
TA贡献1852条经验 获得超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;
}
}
![?](http://img1.sycdn.imooc.com/533e50ed0001cc5b02000200-100-100.jpg)
TA贡献1864条经验 获得超6个赞
根据您的编辑,这是您的答案:
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类的元素
添加回答
举报