javascript - 未捕获的 TypeError 无法设置空控制台输出的属性 'className'

标签 javascript html typeerror

我有这个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, 我认为我的功能一切正常,但控制台有不同的想法..! 输出为未捕获的类型错误:无法将属性“className”设置为 null

谁能帮我吗?

附:我之前做了一个具有相同逻辑的函数,我没有问题

最佳答案

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";

关于javascript - 未捕获的 TypeError 无法设置空控制台输出的属性 'className',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33893800/

相关文章:

javascript - Angular Material 日期选择器格式语言环境

javascript - IE 和 Edge 中下拉菜单的黑色边框问题

javascript - 如何将 bootstrap 按钮链接到 php 代码?

javascript - 我们可以覆盖 Javascript DOM 对象原型(prototype)属性吗?

javascript - 我可以为自定义 Material-ui 主题定义特定于断点的间距吗?

html - 如何在 Visual Studio Code 中格式化保存 HTML-Eex 文件?

python-2.7 - 导入 matplotlib.pyplot 时出现 Matplotlib TypeError

python - 非常基本的 django 教程产生错误 : TypeError at/hello/, hello() takes no arguments (1 given)

python - TypeError: 'int' 对象不支持项目分配

javascript - 在 Bootstrap 模态中自动播放的视频,在模态关闭时停止