在此函数中,传递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收到无效的参数,视频将无法播放。同时视频在第一个例子中播放。价值在哪里迷失?
答案 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'));
});