2012-12-16 28 views
1

這裏是一個demo
如果用戶點擊紅色箭頭,我想跳過得到相關視頻。
下面有原始的播放列表渲染功能,與demo中的功能不同。修改原始功能的最簡單方法是用我的紅色箭頭網址替換img.src=值。但由於箭頭圖像不會動態變化,因此它不是最聰明的方式。那麼,如何通過點擊紅色箭頭讓用戶跳到相關視頻?Asigning一個匿名函數點擊事件

function ytplayer_render_playlist() 
    { 
    for (var i = 0; i < ytplayer_playlist.length; i++) 
    { 
     var img = document.createElement("img"); 
     img.src = "http://img.youtube.com/vi/" + ytplayer_playlist[ i ] + "/default.jpg"; 
     var a = document.createElement("a"); 
     a.href = "#ytplayer"; 

     a.onclick = (
     function(j) 
     { 
      return function() 
      { 
      ytplayer_playitem = j; 
      ytplayer_playlazy(1000); 
      }; 
     } 
    )(i); 
     a.appendChild(img); 
     document.getElementById("ytplayer_div2").appendChild(a); 
    } 
    } 

回答

0

您沒有將您的值j傳遞給下一個函數。

a.onclick = (
    function(j) 
    { 
     return function(j) 
     { 
     ytplayer_playitem = j; 
     ytplayer_playlazy(1000); 
     }; 
    } 
)(i); 

但是,我看不出第二個函數和(i)的好理由;最後可能需要修剪,我不認爲它做任何事情。

a.onclick = (
    function(j) 
    { 
     ytplayer_playitem = j; 
     ytplayer_playlazy(1000); 
    } 
); 
+0

j應在範圍內可用。幷包裝函數返回到另一個函數保護和清理本地符號表,因此它是一個乾淨的參考返回到每個調用... –

+0

拖尾'(我)'傳遞參數到anon創建所需的anon。 .. –

+0

你的第二個評論聽起來很有趣,你有一個術語我可以谷歌或我可以檢查出一個鏈接?歡呼聲 –