javascript - 根据复选框值使另一个元素可见/不可见

标签 javascript checkbox

我完全在这里学习!我还在玩 JS。

当复选框被更改时,我希望范围 slider 处于非事件状态并且输出为零。

function outputUpdate(obj) {
  obj.previousElementSibling.value = obj.value;
}

function handleClick(obj) {
  obj.previousElementSibling.value = obj.value;
}
<fieldset>
  <legend><h3>Engine</h3></legend>
  <output for="engine" id="engine">0</output>
  <input id="engine" type="range" min="0" max="10" value="0" step="1" list="0-10" oninput="outputUpdate(this)">
  <input type="checkbox" name="engine-closed" id="engine-closed" onclick='handleClick(this);' value="0" /><label for="engine-closed">Closed</label>
</fieldset>

我不确定如何使范围 slider 在复选框上处于非事件状态/不可见状态。 然后,当取消选中时,使 slider 再次处于事件状态/可见状态。

更进一步,checkbox改变时如何让输出为零?

到目前为止,使用上面的代码, slider 工作得很好并且它更新了输出。 选中复选框时, slider 会根据需要归零,但不会输出。

编辑:大约有 20 种不同的带输出的表单 slider 。所以最好使用调用函数的 id 而不是声明一个 var...

最佳答案

删除所有内联 javascript 并改用 addEventListener
然后你可以只获取元素,在循环中绑定(bind)事件,并通过使用 this 和获取兄弟元素等来引用其他元素。

var ranges = document.querySelectorAll('fieldset input[type=range]');
var boxes  = document.querySelectorAll('fieldset input[type=checkbox]');

[].slice.call(ranges).forEach(function(range) {
  range.addEventListener('input', function() {
    this.previousElementSibling.value = this.value;
  });
});

[].slice.call(boxes).forEach(function(box) {
  box.addEventListener('change', function() {
    var range = this.previousElementSibling;
    var event = new Event('input');

    range.value = 0;
    range.dispatchEvent(event);
    range.disabled = this.checked;
  });
});
<fieldset>
  <legend><h3>Engine</h3></legend>
  <output for="engine" id="engine">0</output>
  <input id="engine" type="range" min="0" max="10" value="0" step="1" list="0-10">
  <input type="checkbox" name="engine-closed" id="engine-closed" value="0" />
  <label for="engine-closed">Closed</label>
</fieldset>

关于javascript - 根据复选框值使另一个元素可见/不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37863431/

相关文章:

Javascript 似乎没有运行

javascript - Angular Directive(指令)范围为空

c++ - Qt - 如何自定义 QTableWidget 的复选框

javascript - 复选框值的总和

java - 更改代号一中的复选框样式

javascript - <li> html 条目内的复选框不可点击 - 与用于折叠/展开列表项的 javascript 结合使用

javascript - 如何使用 TensorFlow.js 进行多变量回归

javascript - Vue.js 获取所有 v-model 绑定(bind)

javascript - 使用velocity.js和blast.js时子元素开始不透明

swift - 取消选中复选框时如何从集中删除项目?