Javascript onclick函数是否覆盖if语句?

Javascript onclick函数是否覆盖if语句?,javascript,jquery,Javascript,Jquery,我只是尝试在单击按钮后加载一个函数,但根据值,它将调用不同的方法并执行不同的操作 我知道该值被设置为“set”,但它仍然进入if语句并提交removeAttribute方法 if (change == "set"){ document.getElementById('close').setAttribute("data-dismiss", "modal"); $('#\\#myModal').modal({ keyboard: false, bac

我只是尝试在单击按钮后加载一个函数,但根据值,它将调用不同的方法并执行不同的操作

我知道该值被设置为“set”,但它仍然进入if语句并提交removeAttribute方法

if (change == "set"){
            document.getElementById('close').setAttribute("data-dismiss", "modal");
            $('#\\#myModal').modal({ keyboard: false, backdrop: 'static' });
            $('#\\#myModal').modal('show');
            createPicker();
            }
            else if (change == "search"){
                document.getElementById('close').onclick = function(){
                    document.getElementById('close').removeAttribute("data-dismiss");
                    hideFields();
                }
            }

如果有人知道如何在值不匹配时阻止它进入else语句,我们将不胜感激。

我认为问题在于您已经设置了
onclick
一次,您需要做的是清除
onclick
即使在
set
条件下

if (change == "set"){

如果
change
确实等于字符串
“set”
,则将不执行
else
。需要查看更多信息。真的需要看看变化是如何设定的,以确定它是否是你所认为的。尝试在if语句之前将其记录到控制台以进行检查。您是否意识到,一旦附加事件,它将始终被附加,直到您将其删除?我可以截图显示它确实已“设置”。我知道,因为它在chrome调试器中显示值。这就是为什么我如此激动confused@Pointy你需要证据来支持你的事实
       document.getElementById('close').removeEventListener("onclick");
        document.getElementById('close').setAttribute("data-dismiss", "modal");
        $('#\\#myModal').modal({ keyboard: false, backdrop: 'static' });
        $('#\\#myModal').modal('show');
        createPicker();
        }
        else if (change == "search"){
            document.getElementById('close').onclick = function(){
                document.getElementById('close').removeAttribute("data-dismiss");
                hideFields();
            }
        }