【发布时间】:2021-10-17 17:02:39
【问题描述】:
我尝试实现一个功能,即 range 类型的输入元素总是将它们的值解析为位于范围之后的 span 元素。
控制台没有输出任何问题,是否有可能,我无法在中定义输入的类型
HTML
<div class="rowitem rowinput w100">
<label for="person">Units</label>
<input type="range" id="units" name="units" min="1" max="30" value="1" step="1" />
<div class="range_sel_cont">
<span class="range_sel">1</span>
Units
<div>
</div>
JS(原版)
let ranges = document.getElementsByTagName('input[type=range]');
for (var i = 0 ; i < ranges.length; i++) {
ranges.addEventListener ("change", function () {
let show = this.closest('.range_sel');
show.innerHTML = this.value;
});
};
【问题讨论】:
-
您没有仔细检查以确保 .closest() 确实按照您的想法进行。
-
对...最近的只查找向上祖先树
-
range周围缺少引号,还记得我们如何在 CSS 中选择它吗?input[type="range"]。 IMP:您不能使用相同类型的引号,就像在上面的引用中您使用单引号(',')在getElementsByTagName中,因此在指定range时,您将 使用双引号(" 、") -
@AdarshDubey 不需要报价。见:CSS attribute selectors: The rules on quotes (", ' or none?)
标签: javascript input range addeventlistener