所以,我试图做到这一点,所以我可以使用jQuery在整个文档中全局创建一个变量,但是在.each()语句中。
我把“var previous = item.channel.display_name”放在我试图创建的变量中。
代码:
jQuery(function(){
var streams = null;
jQuery.getJSON("https://api.twitch.tv/kraken/search/streams?q=path%20of%20exile&callback=?", function (data) {
streams = data.streams;
jQuery("#next").show();
jQuery("#prev").show();
jQuery("#next").click();
});
var globalCnt = 0;
jQuery("#next").click(function() {
var localCnt = 0;
var itemsToShow = 1;
jQuery.each(streams, function (index, item) {
localCnt++;
if(localCnt > globalCnt && itemsToShow > 0) {
jQuery("#content").empty();
jQuery("#content").html('<object style="margin-left:0.5%;" type="application/x-shockwave-flash" height="378" width="620" id="live_embed_player_flash" data="http://www.twitch.tv/widgets/live_embed_player.swf?channel=' + item.channel.display_name + '" bgcolor="#000000"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="movie" value="http://www.twitch.tv/widgets/live_embed_player.swf" /><param name="flashvars" value="hostname=www.twitch.tv&channel=' + item.channel.display_name + '&auto_play=false&start_volume=25" /></object><iframe frameborder="0" scrolling="no" id="chat_embed" src="http://twitch.tv/chat/embed?channel=' + item.channel.display_name +'&popout_chat=true" height="378" width="350"></iframe>');
globalCnt++;
itemsToShow--;
var previous = item.channel.display_name;
}
});
if(itemsToShow > 0)
jQuery("#showBtn").hide();
});
jQuery("#prev").click(function() {
var localCnt = 0;
var itemsToShow = 1;
jQuery.each(streams, function (index, item) {
localCnt++;
if(localCnt > globalCnt && itemsToShow > 0) {
jQuery("#content").empty();
document.write(previous);
jQuery("#content").html('<object style="margin-left:0.5%;" type="application/x-shockwave-flash" height="378" width="620" id="live_embed_player_flash" data="http://www.twitch.tv/widgets/live_embed_player.swf?channel=' + previous + '&auto_play=false&start_volume=25" /></object><iframe frameborder="0" scrolling="no" id="chat_embed" src="http://twitch.tv/chat/embed?channel=' + previous +'&popout_chat=true" height="378" width="350"></iframe>');
globalCnt++;
itemsToShow--;
}
});
if(itemsToShow > 0)
jQuery("#showBtn").hide();
});
});
答案 0 :(得分:2)
创建全局变量没有任何问题,但如果你想正确地做这些事情,你必须确定一些事情。
如果可能,只添加一个全局变量,然后将所有代码包装在该变量上。创建许多全局变量并不是一个好主意。
在您的情况下,您应该创建类似:var myApp = myApp || {} 也就是说:myApp等于myApp(如果它已经存在,或者如果myApp以前不存在,myApp将是一个空对象。
然后,这一行: var previous = item.channel.display_name;
将成为: myApp.previous = item.channel.display_name。
答案 1 :(得分:1)
我不是在纵容全局变量,但是如果你想在另一个范围内创建一个,你可以将它添加到window
对象中:
window.globalVal = "foo";
window
是全局对象上指向自身的属性。向其添加属性等同于创建全局变量。
因此,对于您的情况,您可以
window.previous = item.channel.display_name;
然后从任何地方访问先前 - 假设它没有被遮蔽,当然。在最后一点上,如果我没有提到全局变量通常是一个坏主意,我会失职。请谨慎使用它们。