javascript
  • iframe
  • youtube-api
  • 2016-03-20 164 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

    相关问题