Javascript 使用Class“;名称”;而不是“;名称”;
我很难理解如何解决下面的代码,使其使用“类名”而不是“名称” 例如:当您单击“上午9点我只想要”时,所有其他上午9点元素将被禁用 谢谢你的见解Javascript 使用Class“;名称”;而不是“;名称”;,javascript,Javascript,我很难理解如何解决下面的代码,使其使用“类名”而不是“名称” 例如:当您单击“上午9点我只想要”时,所有其他上午9点元素将被禁用 谢谢你的见解 功能更改(el){ var ckName=document.getElementsByTagName('input'); for(var i=0,c;c=ckName[i];i++){ if(ckName[i].type==“checkbox”&&el.className==“9AM”){ c、 禁用=!(!el.checked | c==el);
功能更改(el){
var ckName=document.getElementsByTagName('input');
for(var i=0,c;c=ckName[i];i++){
if(ckName[i].type==“checkbox”&&el.className==“9AM”){
c、 禁用=!(!el.checked | c==el);
}
}
}
上午9点
上午9点
上午10点
上午10点
测试4
输入
如果您要做的是禁用具有相同类名的任何其他元素,则需要稍微更新If语句。您只检查传递到函数中的元素,而我认为您的意思是将检查的元素与所有其他元素className进行比较
function ckChange(el) {
var ckName = document.getElementsByTagName("input");
for (var i = 0, c; (c = ckName[i]); i++) {
console.log(el.className)
if (ckName[i].type == "checkbox" && ckName[i].className === el.className) {
c.disabled = !(!el.checked || c === el);
}
}
}
这是一个有效的代码笔:您可以使用相同的类名对元素进行分组,然后在选中复选框时,禁用其组中的所有元素。 以下是一个例子:
constgroupclasses=['9AM','10AM','11AM'];
const groups=groupClasses.map((cls)=>{
const elms=document.getElementsByClassName(cls);
返回数组.from(elms);
});
groups.forEach((组)=>{
group.forEach((elm)=>{
elm.addEventListener('change',()=>{
group.filter(e=>e!==elm).forEach((e)=>{
e、 禁用=elm.checked;
});
});
});
});代码>
上午9点
上午9点
上午10点
上午10点
测试4
输入
将当前元素类与所有其他类一起检查
ckName[i].className==el.className
功能更改(el){
var ckName=document.getElementsByTagName('input');
for(var i=0,c;c=ckName[i];i++){
//console.log(ckName[i]);
if(ckName[i].type==“checkbox”&&ckName[i].className==el.className){
ckName[i].disabled=true;
//c、 禁用=!(!el.checked | c==el);
}
}
}
上午9点
上午9点
上午10点
上午10点
测试4
输入
这信息太少了。复选框应该如何准确地工作?无论你想做什么,你都可能会发现和/或有用。这正是他的代码所做的。。你在他的电脑上运行代码片段了吗?@GustavoAGarcia没有,我的代码片段只会禁用与单击的代码片段具有相同类的复选框,OP会禁用所有这些复选框。非常感谢你花时间提供帮助!在这里学到了很多,太棒了!如果我的答案是你想要的,请接受它作为答案。谢谢