未捕获的类型错误无法设置空控制台输出的属性“className”
2015-11-24
1834
我有这个 html 代码:
<input type="checkbox" id="template-contactform-baggages-custom" name="baggages" value="baggages" class="sm-form-control" onchange="showcheck(this, numbag)" />
<div id="numbag" class="hidden">
<input type="number" name="numofbag" value="" />
</div>
和这个 javascript 函数:
function showcheck(check, inputid) {
var checkid=check.id;
var checked=check.checked;
var inputelement = document.getElementById(inputid);
if(!checked){
inputelement.className = "";
inputelement.className = inputelement.className + "hidden";
}else{
inputelement.className = "";
inputelement.className = inputelement.className + "nothidden";
}
}
正如你所见,当我选中复选框时,我想隐藏或显示隐藏的 div, 我认为我的函数一切正常,但控制台有不同的想法..! 未捕获的 TypeError:无法将属性“className”设置为 null,是输出吗?
有人能帮我吗?
附言:我之前做过一个具有相同逻辑的函数,没有问题
1个回答
onchange="showcheck(this, numbag)"
应该是
onchange="showcheck(this, 'numbag')"
并且,您需要在设置 className 时添加一个空格。但问题是您的代码将继续添加类,因此它将同时隐藏和不隐藏。您应该使用 classList
inputelement.classList.toggle('hidden', !checked);
inputelement.classList.toggle('nothidden', checked);
并且由于您只是在设置类(错过了清除它的部分),因此您只需执行三元运算符即可。
inputelement.className = checked? "nothidden" : "hidden";
epascarello
2015-11-24