gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:32:41 25 4
gpt4 key购买 nike

我完全在这里学习!我还在玩 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com