2015-07-03 65 views
0

我有一个脚本,其中检查变量是否设置或等于'否'。如果它等于no或未设置,则将var定义为“是”。最好的方法来检查一个变量jQuery

这是我的代码

if (typeof progress == 'undefined' || progress == 'no') { 
document.getElementById('button-play').onclick = null; 
var progress = 'yes'; 

然后调用函数时它会覆盖变量是否定的。

function enableButton(){ 
var progress = 'no'; 
document.getElementById('button-play').onclick = play(); 
} 

执行时,脚本和进步是不确定的,剧本的作品,并没有覆盖进度,第一次“不”,但是当我尝试使用定义为VAR进度再次运行该脚本“不”呢不起作用。

我是否正确检查进度值?

新增的jsfiddle:https://jsfiddle.net/zxxubopq/

+0

你应该从jsfiddle/codepen中添加一段代码,这样我们可以更好地帮助你 –

+0

按要求添加, – Semger

回答

2

在JavaScript中scope或者是全球功能。如果你在function中定义了一个变量,那么它将只在function范围内。

这不会覆盖该变量,它是一个不同的本地progress变量在enableButton()范围内。你应该修复你的范围,它会起作用。您的评论后


编辑:

document.getElementById('button-play').onclick = play(); 

其实是错误的,因为你要的功能分配给onclick,没有返回值,所以你的实际需要:

document.getElementById('button-play').onclick = play; 

请记住,JavaScript函数是一流的函数,因此可以像对待任何其他对象一样对待它们。

+0

我添加了jsfiddle,你能告诉我如何管理范围吗?感谢https://jsfiddle.net/zxxubopq/ – Semger

+0

丑陋,但这个工程:https://jsfiddle.net/zxxubopq/1/如果可能的话,你应该尽量不要使用全局变量。 – meskobalazs

+0

更好的解决方案是:https://jsfiddle.net/zxxubopq/4/(没有更多的全球范围污染) – meskobalazs

2

你的var里面的一个函数使变量progress成为本地的一个。所以对本地变量的任何更改都不适用于全局变量。

+0

我加了的jsfiddle,https://jsfiddle.net/zxxubopq/。你可能会告诉我如何做到这一点? – Semger

1
function enableButton(){ 
    var progress = 'no'; 
} 

这行代码内的函数创建了新的变量var progress。所以当函数退出时,这个变量被删除。

尝试将其更改为:

function enableButton(){ 
    progress = 'no'; 
} 
0

声明变量“进步”的作用都在外面开始。

相关问题