为什么这个JavaScript参数会丢失?

时间:2016-03-20 21:01:46

标签: javascript iframe youtube-api

在此函数中,传递value参数以填充我的URL。这非常有效。

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:$未定义”(它在第一部分也会返回,效果很好)。

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;
}

这里我试图将值param(再次在url中)推送到id =“player”的iframe。 iframe收到无效的参数,视频将无法播放。同时视频在第一个例子中播放。价值在哪里迷失?

1 个答案:

答案 0 :(得分:1)

value仅存在于each循环的范围内。因此,首先修复您的引用错误,然后我建议在第二个示例中进行以下更改:

1)使用href循环中的videoId值更新each,如第一个示例所示:

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

2)然后使用该值启动播放器:

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