Javascript 如何在按下单选按钮时将CSS属性更改为“显示:无”
所以,当我选择一个收音机(当前)时,我试图让两个输入框显示在一个表中,如果我选择另一个收音机(不存在),则隐藏这两个输入框。我得到了这个代码,但有一个小问题Javascript 如何在按下单选按钮时将CSS属性更改为“显示:无”,javascript,html,jquery,css,Javascript,Html,Jquery,Css,所以,当我选择一个收音机(当前)时,我试图让两个输入框显示在一个表中,如果我选择另一个收音机(不存在),则隐藏这两个输入框。我得到了这个代码,但有一个小问题 函数缺席开关(){ document.getElementsByClassName(“table-custom3”)[0].style.display='none'; } 函数presentSwitch(){ document.getElementsByClassName(“table-custom3”)[0].style.display
函数缺席开关(){
document.getElementsByClassName(“table-custom3”)[0].style.display='none';
}
函数presentSwitch(){
document.getElementsByClassName(“table-custom3”)[0].style.display='block';
}
如果不是getElementsByClassName
notwork,则需要将代码包装在table
标记中。另外getElementsByClassName
返回数组元素,您需要按索引获取
[...document.getElementsByClassName("table-custom3")].map((item)=> {item.style.display = 'none'});
函数缺席开关(){
[…document.getElementsByClassName(“table-custom3”)].map((item)=>{item.style.display='none'});
}
函数presentSwitch(){
[…document.getElementsByClassName(“table-custom3”)].map((item)=>{item.style.display='''});
}
使用循环隐藏和显示类中的所有元素
此外,您需要使用内联块
而不是块
,以防止它们被放在不同的行上
函数缺席开关(){
from(document.getElementsByClassName(“table-custom3”)).forEach(el=>el.style.display='none');
}
函数presentSwitch(){
from(document.getElementsByClassName(“table-custom3”)).forEach(el=>el.style.display='inline block');
}
如何使用根据同级元素的状态切换的类
差不多
.table-custom2.enabled~.table-custom3{display:block;}
.table-custom2.disabled~.table-custom3{display:none;}
函数缺席开关(){
document.querySelector(“.table-custom2”).classList.replace(“已启用”、“已禁用”);
}
函数presentSwitch(){
document.querySelector(“.table-custom2”).classList.replace(“禁用”、“启用”);
}
这是您的HTML代码
<table>
<tr>
<td class="table-custom2">
<input type="radio" id="present" name="attendance" onclick="presentSwitch(this) "/></td>
<td class="table-custom2 "><input type="radio" id="absent" name="attendance" onclick="absentSwitch(this) " /</td>
<td class="table-custom3 "><input type="time " class="input-xsmall "></td>
<td class="table-custom3 "><input type="time " class="input-xsmall "></td>
</tr>
</table>
现在您可以处理表中的多个输入了我从您的代码中创建了一个片段,但它不起作用。你能编辑一下吗?这样我们就可以重现你的问题了?另外,请确保您的代码格式正确,您在第一次HTMLjQuery中遇到了一系列错误:$(“.table-custom3”).hide()
和$(“.table-custom3”).show()
@克隆编辑了它。我认为它没有显示正确,因为css文件不在这里。很抱歉。@Barmar我对这一点很陌生,如果这是一个愚蠢的问题,我很抱歉,但我到底应该如何使用该代码?它取代了document.getElementsByClassName(“table-custom3”)[0]。style.display='none'几分钟前,他在一次编辑中添加了table标签。我尝试了这个,但只显示了第一个文本框。另一个仍然隐藏着,所以这对我提到的问题非常有效,但似乎我对我的问题理解不正确。(我想我还有很多东西要学)当我使用这个并在下面输入另一个用户时,所有的文本框都显示/隐藏了,但我想为每个用户单独做这些。(我应该通过AJAX从这里的数据库中获取用户列表,但在获取之前我还有很多要学习的内容)再次感谢您,因为您需要获取当前行中类的元素列表,而不是所有元素。因此,您需要将该行作为参数传递给函数,然后搜索该行中的元素。我以前使用过一个代码,为单行显示/隐藏这些元素,但我不确定从数据库获取数据时如何使用它,因为我不知道用户数。因此,单独添加它们不是一个选项。有很多函数可以遍历DOM以查找相关元素。例如,row=element。最近的(“tr”)
将找到包含元素的行。和行。querySelectorAll(“.table-custom3”)
将在该行中找到类成员。谢谢。我现在就去看看
function absentSwitch(event) {
event.parentElement.parentElement.children[2].style.display = 'none';
event.parentElement.parentElement.children[3].style.display = 'none';
}
function presentSwitch(event) {
event.parentElement.parentElement.children[2].style.display = 'block';
event.parentElement.parentElement.children[3].style.display = 'block';
}