向每个复选框添加一个eventListener
Adding an eventListener to each checkbox
我正在寻找一种干净简洁的方法,将事件侦听器添加到我的每个复选框中,而不必重复我的Javascript代码,当涉及到JS时,我仍然耳濡目染,所以任何帮助都将不胜感激。
这是我迄今为止拥有的
function exFunction() {};
// on-click
var x = document.getElementById("checkboxopt");
x.addEventListener("click", function(){
console.log("Opt");
});
var y = document.getElementById("checkboxopt1");
y.addEventListener("click", function(){
console.log("Opt 1");
});
var z = document.getElementById("checkboxopt2");
z.addEventListener("click", function(){
console.log("Opt 2");
});
<div id=""><input name="checkboxopt" id="checkboxopt" value="true" type="checkbox"><br/></div>
<div id=""><input name="checkboxopt" id="checkboxopt1" value="true" type="checkbox"><br/></div>
<div id=""><input name="checkboxopt" id="checkboxopt2" value="true" type="checkbox"><br/></div>
选择all并在集合上循环,然后将事件添加到集合中的每个元素中。
var cbs = document.querySelectorAll('[type="checkbox"]');
[].forEach.call(cbs, function (cb) {
cb.addEventListener("click", function(){
console.log(this.id);
});
});
<div id="wrap">
<div id="">
<input name="checkboxopt" id="checkboxopt" value="true" type="checkbox">
</div>
<div id="">
<input name="checkboxopt" id="checkboxopt1" value="true" type="checkbox">
</div>
<div id="">
<input name="checkboxopt" id="checkboxopt2" value="true" type="checkbox">
</div>
</div>
或事件委派,并使用事件对象来确定单击了哪个元素。
var wrapper = document.getElementById('wrap');
wrapper.addEventListener("click", function (evt) {
var elem = evt.target;
if (elem.name==="checkboxopt") {
console.log(elem.id);
}
});
<div id="wrap">
<div id="">
<input name="checkboxopt" id="checkboxopt" value="true" type="checkbox">
</div>
<div id="">
<input name="checkboxopt" id="checkboxopt1" value="true" type="checkbox">
</div>
<div id="">
<input name="checkboxopt" id="checkboxopt2" value="true" type="checkbox">
</div>
</div>
您可以在每个复选框中迭代:
var checkboxes = document.querySelectorAll('input[type="checkbox"]');
for(var i = 0; i < checkboxes.length; i++){
var checkbox = checkboxes[i];
checkbox.addEventListener('click', function(){
console.log(this);
});
}
希望能有所帮助。
干杯
您可以使用for
循环并在循环外创建函数。
var c = document.querySelectorAll('input[type="checkbox"]');
for (let i = 0; i < c.length; i++) {
clickFunction(i)
}
function clickFunction(num) {
c[num].addEventListener('click', function() {
console.log('Opt ' + (num + 1));
})
}
<div id=""><input name="checkboxopt" id="checkboxopt" value="true" type="checkbox"><br/></div>
<div id=""><input name="checkboxopt" id="checkboxopt1" value="true" type="checkbox"><br/></div>
<div id=""><input name="checkboxopt" id="checkboxopt2" value="true" type="checkbox"><br/></div>
或者使用ES6,您可以使用let
而不是具有块范围的var
,因此在循环的每次迭代中都会创建新的i
。
var c = document.querySelectorAll('input[type="checkbox"]');
for (let i = 0; i < c.length; i++) {
c[i].addEventListener('click', function() {
console.log('Opt ' + (i + 1));
})
}
<div id=""><input name="checkboxopt" id="checkboxopt" value="true" type="checkbox"><br/></div>
<div id=""><input name="checkboxopt" id="checkboxopt1" value="true" type="checkbox"><br/></div>
<div id=""><input name="checkboxopt" id="checkboxopt2" value="true" type="checkbox"><br/></div>
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 一旦调用了另一个函数/EventListener,就停止它
- Javascript,无论如何要做一个“whileFocused”eventListener?(没有 JQuery)
- 向每个复选框添加一个eventListener
- 为一个特定元素创建多个eventlistener
- EventListener不是一个函数
- 将eventlistener添加到锚点,以在googlemapsapv3中提示一个信息窗口
- javascript:删除一个 EventListener,然后将其重新添加
- JavaScript eventlistener onclick在动画后调用另一个函数