我有两个基本相同的功能。第一个函数传递了一个鼠标事件,其中 event.target 是输入类型='checkbox' 第二个函数传递了输入类型='checkbox' 有没有办法将它们重写为一个函数?
function crewChecked(event){
if(event.target.checked){
names.push(event.target.value)
}else{
for(let i = 0; i < names.length;i++){
if(names[i] == event.target.value){
names = names.filter((name, index) => index !== i);
break;
}
}
}
if(names.length==0){
document.getElementById('dropdownCrewButton').innerText = "Select Crew"
}else{
document.getElementById('dropdownCrewButton').innerText = names.length + " crew"
}
}
function crewChecked2(crewCheckbox){
if(crewCheckbox.checked){
names.push(crewCheckbox.value)
}else{
for(let i = 0; i < names.length;i++){
if(names[i] == crewCheckbox.value){
names = names.filter((name, index) => index !== i);
break;
}
}
}
if(names.length==0){
document.getElementById('dropdownCrewButton').innerText = "Select Crew"
}else{
document.getElementById('dropdownCrewButton').innerText = names.length + " crew"
}
}
这两个函数中唯一不同的部分是如何获取对复选框的引用。因此,如果您弄清楚如何在这两种情况下获得该复选框,那么您就是黄金。
就像是:
function crewChecked(eventOrCheckbox){
// Added
const checkbox = eventOrCheckbox.target || eventOrCheckbox
if(checkbox.checked){
names.push(checkbox.value)
}else{
for(let i = 0; i < names.length;i++){
if(names[i] == checkbox.value){
names = names.filter((name, index) => index !== i);
break;
}
}
}
if(names.length==0){
document.getElementById('dropdownCrewButton').innerText = "Select Crew"
}else{
document.getElementById('dropdownCrewButton').innerText = names.length + " crew"
}
}
此行检查参数的target
属性eventOrCheckbox
。如果有,则它是一个事件,复选框应保存到checkbox
. 如果没有,则假设此参数是复选框并继续。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句