首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态按钮上的名称类型===“未定义”

动态按钮上的名称类型===“未定义”
EN

Stack Overflow用户
提问于 2016-06-02 15:12:56
回答 1查看 192关注 0票数 0

当单击动态创建按钮时,如何检查变量是否有值?

这是已经做了但不起作用的事情。

代码语言:javascript
运行
复制
var name;
$(document).on('click', '#test', function(){
   if (typeof name === "undefined"){
     //pass message
   }else{
     //do something
   }
});
EN

回答 1

Stack Overflow用户

发布于 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')定义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37595755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档