我所要做的就是在点击元素时按ID切换元素类。
<script>
function selectLoad(id)
{
if(document.getElementById(id).className == "load") {
document.getElementById(id).className = "loadSelected";
} else {
document.getElementById(id).className = "load";
}
}
</script>
<div class="load" id=" ... set by PHP per element ... " onclick="selectLoad(this)">
这会返回错误...
未捕获的TypeError:无法读取null的属性'className'
所以我猜它不喜欢条件。
我是JS的新手,需要帮助,先谢谢。
答案 0 :(得分:5)
您正在传递dom元素(使用this
),而不是id
。
您应该将代码更改为
function selectLoad(element)
{
if (element.className == "load") {
element.className = "loadSelected";
} else {
element.className = "load";
}
}
答案 1 :(得分:2)
我认为你传递的是dom中不存在的id。在你的javascript执行之前加载了dom吗?将脚本移动到关闭html标记
之前的页面底部编辑:在下面的评论中讨论后,错误就是这一行:
<div class="load" id=" ... set by PHP per element ... " onclick="selectLoad(this)">
应该阅读
<div class="load" id=" ... set by PHP per element ... " onclick="selectLoad(this.id)">
答案 2 :(得分:0)
您的代码不安全,因为您没有检查您是否拥有给定id
的DOM元素
这就是您收到错误的原因:Cannot read property 'className' of null
if(document.getElementById(id)) {
// ... do something and do not go further.
return;
}
当您致电this
时,问题就在于selectLoad
。此时,this
是DOM元素,而不是您期望的字符串:... set by PHP per element ...
。所以你必须相应地改变代码。