[英]Appropriate way to toggle in Javascript/jQuery without using global variables?
[英]Easy way to toggle something without global variables
我觉得这很难,因为这是一个非常简单的问题。 我希望cycleBackground函数在changeBackground("#firstbg", img.src)
和changeBackground("#secondbg", img.src)
cycleBackground = ()->
img = new Image()
img.src = '/assets/'+Math.floor(Math.random()*50)+'.jpg)'
img.onLoad = ()->
changeBackground("#firstbg", img.src)
我打算创建一个名为“selected”的全局var并使其等于“#firstbg”,如果选择“#firstbg”,则将其更改为“#secondbg”,以便每次调用cycleBackground时它都会更改任何元素的背景已经改变了。 我知道这是糟糕的编码实践,什么是更好的解决方案?
只需在与函数相同的范围内创建一个新变量; 无论是cycleBackground
还是changeBackground
,无论哪个。 这完全没问题。 CoffeeScript将整个编译文件包装在IIFE中 ,除非您将它们显式附加到全局对象(例如, window.selected = ...
),否则不会引入任何全局变量。
selected = 'first'
cycleBackground = ()->
img = new Image()
img.src = '/assets/'+Math.floor(Math.random()*50)+'.jpg)'
img.onLoad = ()->
selected = (if selected == 'first' then 'second' else 'first')
changeBackground("##{selected}bg", img.src)
您可以引入一个变量x
来保存您当前正在查看的图像,并执行以下操作:
x = 0;
img.onLoad = ()->
x = Math.abs(x-1); # toggle
changeBackground("#" + ['firstbg','secondbg'][x], img.src);
注意:我不知道x
会在哪里生存,因为我对CoffeeScript一无所知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.