javascript
  • iframe
  • youtube-api
  • 2016-03-20 89 views 1 likes 
    1

    在這個函數中,value參數被傳遞下來填充我的URL。這工作完美。爲什麼JavaScript參數會丟失?

    function showResults(results) { 
        var html = ''; 
        $.each(results, function(index,value) { 
        html += '<li><a href="https://www.youtube.com/watch?v=' +  value.id.videoId + '" class="html5lightbox"><img src="' +  value.snippet.thumbnails.medium.url + '">' + value.snippet.title + '(</a>More from <a href="https://www.youtube.com/channel/' +  value.snippet.channelId + '">' + value.snippet.channelTitle + '</a>)</li>'; 
        }); 
        $('#results').html(html); 
    } 
    

    在這個幾乎相同的函數中,值param會丟失它的值。我看不出如何。很難調試爲什麼會發生這種情況,因爲console.log()只是返回「ReferenceError:$ is not defined」(無論我檢查什麼)(它在第一部分也會返回,這很好用)。

    function showResults(results) { 
        var html = ''; 
        $.each(results, function(index,value) { 
        html += '<li><a href="#"><img src="' + value.snippet.thumbnails.medium.url + '">' + value.snippet.title + '</a>) </li>'; 
        }); 
        $('#results').html(html); 
    
        $('#results li a').click(function(){ 
        playVid($(this).attr(value.id.videoId)); 
        }); 
    } 
    
    function playVid(vidID) { 
        var embedVid = 'https://www.youtube.com/embed/'+vidID+'?autoplay=1'; 
        document.getElementById('player').src = embedVid; 
    } 
    

    在這裏,我試圖將值參數(在url中再次)推到id =「player」的iframe。 iframe收到無效的參數,視頻將無法播放。同時視頻在第一個例子中播放。價值在哪裏丟失?

    回答

    1

    value只存在於each循環的範圍內。所以,首先解決您的引用錯誤,然後我建議在第二個例子中的以下變化:

    <a href="https://www.youtube.com/watch?v=' + value.id.videoId + '"> 
    

    1)在each環像在第一個例子中videoId值更新href 2)然後推出具有該值的播放器:

    $('#results li a').click(function(e) { 
        e.preventDefault(); 
        playVid($(this).attr('href')); 
    }); 
    
    +0

    我不明白。該錨點沒有值.id.videoId – PencilCrate

    +0

    已更新。我的改變是否更有意義? – Andy

    +0

    爲什麼當我們通過href版本時,它的工作,但不是項目本身?我試圖把它作爲一個變量傳遞,作爲一個全局變量,作爲它本身,但沒有骰子。爲什麼作爲href?這些錨標籤有什麼特別之處? – PencilCrate

    相關問題