JS改变元素的类

时间:2013-05-18 21:09:04

标签: javascript

我所要做的就是在点击元素时按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的新手,需要帮助,先谢谢。

3 个答案:

答案 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 ...。所以你必须相应地改变代码。