如果点击动态创建按钮,如何检查变量是否有值?
这是已经完成的但不起作用。
var name;
$(document).on('click', '#test', function(){
if (typeof name === "undefined"){
//pass message
}else{
//do something
}
});
答案 0 :(得分:1)
<强> 1。请勿调用变量name
尝试将您的变量称为其他内容,因为name
在许多情况下被覆盖用于其他目的。它可能不是你问题的整个解决方案,但它可能是一个前进的混杂因素,所以我强烈反对这个变量名称。我不知道您使用的名称是什么,所以在我的示例中,我只需调用变量x
。
<强> 2。验证是否正在设置变量
如果您的问题是typeof x === 'undefined'
始终为真,那么您的第一个操作应该是检查设置x
的代码。您还没有向我们展示这些代码。如果您确实在外部文件中编写x = 123;
,请在该语句之后立即引入alert(x);
,以确保该特定代码段正在执行,并且该变量是根据你的期望。
第3。验证您的事件监听器是否正常工作
在代码中,如果变量未定义,代码将移至传递消息。你说这个变量总是未定义的。是否有任何其他代码正在调用pass message
?也可以在这里输入alert(x)
,看看它是否真的进入了点击监听器,x
未定义。
<强> 4。检查变量的范围
如果alert(x)
确实显示x
已定义并且您的脚本中有值,并且后续按钮点击显示x
未定义(并且您没有任何中间体)代码说x = undefined
),你几乎肯定会遇到一个范围问题。分配x
的脚本正在写入单击侦听器无法访问的局部变量,或者单击侦听器正在读取优先于同名全局变量的局部变量。
如果要在不同的范围之间共享变量,则需要依赖两段代码都可以访问的内容,例如全局范围。如果您的外部脚本改为执行window.x = 123;
,那么您将拥有一个名为x
的全局可访问变量。在单击侦听器中,您可以测试这是否由条件if(typeof window.x === 'undefined')