0

我要做的就是在单击元素时按 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)">

这会返回一个错误...

未捕获的类型错误:无法读取 null 的属性“className”

所以我猜它不喜欢有条件的。

我是 JS 新手,需要帮助,在此先感谢。

4

3 回答 3

5

您正在传递 dom 元素本身(使用this),而不是id.

您应该将代码更改为

function selectLoad(element)
{
    if (element.className == "load") {
        element.className = "loadSelected";
    } else {
        element.className = "load";
    }
}
于 2013-05-18T21:13:12.520 回答
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)">
于 2013-05-18T21:12:04.720 回答
0

您的代码不安全,因为您没有检查是否具有给定的 DOM 元素id

这就是您收到错误的原因: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 .... 因此,您必须相应地更改代码。

于 2013-05-18T21:10:51.480 回答