也许我只是看得太近但我不知道为什么我没有返回更新的变量。
Javascript :
var playlist_id="000";
$('nav').on("click", "a", function(){
playlist_id = $(this).attr('rel');
});
console.log(playlist_id); //returns 000, instead of 111
var playListURL = "http://gdata.youtube.com/feeds/api/playlists/"+playlist_id+"?v=2&alt=json&callback=?";
HTML :
<li><a id="one" rel="000"><img src="images/season1.jpg" /></a></li>
<li><a id="two" rel="111"><img src="images/season2.jpg" /></a></li>
我需要访问.on()函数范围之外的playlist_id。
答案 0 :(得分:4)
我会通过解释事情发生的时间为你解决这个问题,注意评论。希望你会看到playlist_id
始终是全局可访问的,你只是没有正确思考它的值何时被设置。
var playlist_id="000"; //<-- I run first, setting playlist_id to '000'
$('nav').on("click", "a", function(){ //<-- I run second, telling my browser that when navs are clicked, to run the code inside the function to set playlist ID
playlist_id = $(this).attr('rel'); //<-- I do not run until a nav is clicked.
//Any time after a nav is clicked, if you open up a debugger and check the value of the variable playlist_id, you will see it will have the correct value.
});
console.log(playlist_id); //<-- I run third.
//Look at the two other statements that have run before me.
//What would you expect the value of playlist_id to be? Hint:000
我正在向证明添加一个JSFiddle,并且可以全部访问该值。我按原样保留你的代码,但是每隔500毫秒,我就把playlist_id的值写入日志。打开小提琴,观看控制台日志,然后单击两个图像。您将看到该值在您单击时发生更改,并且可以全局访问。 http://jsfiddle.net/T9YkH/
setInterval(function(){
console.log(playlist_id);
}, 500);
答案 1 :(得分:0)
.on()
始终返回调用它的对象以方便链接。在您的情况下,它返回$('nav')
根据您发布的代码,在发生点击时会分配变量playlist_id
。并且您正在尝试在绑定click事件之后但在实际触发之前将其记录在控制台中。
答案 2 :(得分:0)
这一切都没有帮助,所以我回答了这个问题。
这应该被删除,因为它对社区没有帮助。
这是我正在寻找的解决方案:
var playlist_id="000";
$('nav').on("click", "a", function(){
playlist_id = $(this).attr('rel');
onStart(playlist_id);
});
onStart(playlist_id);
function onStart(playlist_id){
var playListURL = "http://gdata.youtube.com/feeds/api/playlists/"+playlist_id+"?v=2&alt=json&callback=?";
}