未定义的DOM元素javascript,而console.log将其解析出来

时间:2014-06-06 09:25:07

标签: javascript html dom

我是javascript的新手,这个问题从一开始就困扰着我。当我得到DOM元素事件行为正常,但是当我尝试更改任何东西(比如类)时,它给了我" undefined不是一个函数"。

我不明白为什么,因为在同一时间console.log发出

<div class="nav-about menu" id="nav-about"></div>

HTML

<div class="nav-about menu" id="nav-about"></div>

JS

var link_one = document.getElementById("nav-about");

link_one.addEventListener("click", function(){
    console.log(this);
    this.addClass('special');
}, false);

我无法在任何地方找到答案。是的,jquery to addClass包含在head标签中。

2 个答案:

答案 0 :(得分:2)

由于addClass上没有this属性,因此它是undefined

您可以在this.classList上添加课程。

var link_one = document.getElementById("nav-about");

link_one.addEventListener("click", function(){
    this.classList.add('special');
}, false);

答案 1 :(得分:1)

$(this).addClass('special');

因为你想使用jquery库,使用jquery库就像调用函数doSomething(this),而是使用$作为函数名