JavaScript函数从调用Element访问它

时间:2016-03-09 19:49:01

标签: javascript reference scope this

我有一个我想要执行的函数与调用元素相关但我似乎无法将它作为对我想要执行的函数的引用传递给它。

简而言之,这是有效的

<div style="background-color:#444444">
    <button onclick="this.parentElement.style.display = 'none';">close</button>
</div>

这不是

<script>
   function close() { this.parentElement.style.display = 'none'; }
</script>

<div style="background-color:#444444">
    <button onclick="close()">close</button>
</div>

为什么会出现这种情况呢?

3 个答案:

答案 0 :(得分:1)

没关系,我是个白痴

似乎我可以使用this关键字

简单地将Element传递给函数
<script>
    function close(object) { object.parentElement.style.display = 'none'; }
</script>

<div style="background-color:#444444">
    <button onclick="close(this)">close</button>
</div>

答案 1 :(得分:0)

这是因为在close()函数中,thiswindow对象。

尝试将元素作为参数传递:

<script>
    function close(btn) { btn.parentElement.style.display = 'none'; }
</script>

<div style="background-color:#444444">
    <button onclick="close(this)">close</button>
</div>

答案 2 :(得分:0)

脱离我的头顶,&#39;这个&#39;不是指向函数中的同一对象,而是指向内联代码中的对象。你可以通过这个&#39;在函数调用中,如:

<script>
   function close(whichObj) { whichObj.parentElement.style.display = 'none'; }
</script>

<div style="background-color:#444444">
    <button onclick="close(this)">close</button>

HTH, 吉姆