当单击动态创建按钮时,如何检查变量是否有值?
这是已经做了但不起作用的事情。
var name;
$(document).on('click', '#test', function(){
if (typeof name === "undefined"){
//pass message
}else{
//do something
}
});发布于 2016-06-02 15:20:05
name 1.不要将变量称为
尝试将您的变量称为其他变量,因为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')定义。
https://stackoverflow.com/questions/37595755
复制相似问题