需要“这个”方面的帮助;在Javascript

Need help on "this" in Javascript

本文关键字:帮助 Javascript 方面 这个 需要      更新时间:2023-09-26

当div中的每个按钮被单击时,我希望父div消失。而不是写onclick="this.parentNode.style. "对于每个按钮,我想调用一个函数done()来使我的代码更干净,但是我的语法在done()中不起作用。什么好主意吗?

        <div id="arms_1" class="col_1">
            <p></p>
            <p></p>
            <p></p>
            <button type="button" onclick="this.parentNode.style.display='none'">Done</button>
        </div>
        <div id="arms_2" class="col_2">
            <p></p>
            <p></p>
            <p></p>
            <button type="button" onclick=done()>Done</button>
        </div>
        <div id="arms_3" class="col_3">
            <p></p>
            <p></p>
            <p></p>
            <button type="button" onclick=done()>Done</button>
        </div>
<script>
        function done(){
            this.parentNode.style.display='none';
        };//done fuction ends
</script>

试试

    <div id="arms_3" class="col_3">
            <p></p>
            <p></p>
            <p></p>
            <button type="button" onclick=done(this)>Done</button>
        </div>
<script>
        function done(obj){
            obj.parentNode.style.display='none';
        };//done fuction ends
</script>

(this)添加到您的done中,然后将其添加到您的函数中

jsfiddle

代码
<script type="text/javascript">
function done(obj) {
    obj.parentNode.style.display = 'none';
}
</script>
<div id="arms_1" class="col_1">
    <p></p>
    <p></p>
    <p></p>
    <button type="button" onclick="this.parentNode.style.display='none'">Done</button>
</div>
<div id="arms_2" class="col_2">
    <p></p>
    <p></p>
    <p></p>
    <button type="button" onclick="done(this);">Done</button>
</div>
<div id="arms_3" class="col_3">
    <p></p>
    <p></p>
    <p></p>
    <button type="button" onclick="done(this);">Done</button>
</div>

尝试使用setAttribute()代替:

<script>
        function done(){
            this.parentNode.setAttribute('display', 'none);
        };//done function ends
</script>

函数内部的this与内联onclick中的this不一样。试着把它传进去。

function done(that){
            that.parentNode.style.display='none';
        };//done fuction ends
<div id="arms_1" class="col_1">
            <p></p>
            <p></p>
            <p></p>
            <button type="button" onclick="this.parentNode.style.display='none'">Done</button>
        </div>
        <div id="arms_2" class="col_2">
            <p></p>
            <p></p>
            <p></p>
            <button type="button" onclick=done(this)>Done</button>
        </div>
        <div id="arms_3" class="col_3">
            <p></p>
            <p></p>
            <p></p>
            <button type="button" onclick=done(this)>Done</button>
        </div>

在函数内部,thisWindow对象。在内联单击处理程序中,它引用button。根据您所处的执行上下文,this可以指不同的东西。