typeof name ===" undefined"在动态按钮上

时间:2016-06-02 15:12:57

标签: javascript jquery

如果点击动态创建按钮,如何检查变量是否有值?

这是已经完成的但不起作用。

var name;
$(document).on('click', '#test', function(){
   if (typeof name === "undefined"){
     //pass message
   }else{
     //do something
   }
});

1 个答案:

答案 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')

定义