通过使用 Youtube Data API v3 从 YouTube 调用我需要的所有信息,我正在使用 jQuery 在网页上构建几个轮播。在完成设计和功能之后,我正在为一件我无法理解的简单事情而苦苦挣扎。
我使用append(``)
这样我就可以将我需要的所有 HTML 附加到我想要的元素中,并在${var}
符号中插入带有变量的其他信息。
除了单个字符串变量外,一切正常preview
。就像它不被识别为变量一样,并且在最终输出中呈现为字符串块。现在一些代码。
这是调用加载所有内容的函数的准备工作:
jQuery(document).ready(function () {
var apikey = 'my-api-key';
var URL = 'https://www.googleapis.com/youtube/v3/playlistItems';
var playlists = {
1: 'PL549CFEF61BF98279',
2: 'PLX_IxBH-yGtonzSE2zyplhI2oky7FWvbE',
3: 'PL038B3F56D598DD61',
4: 'PLDDFDDD10E5584056',
5: 'PLD4F65416EB11640F',
}
loadVids(apikey, URL, playlists);
});
接下来loadVids,对于每个 youtube 播放列表调用getJSON()
并检索数据:
function loadVids(apikey, URL, playlists) {
for (const menuid in playlists) {
var options = { part: 'snippet', key: apikey, maxResults: 20, playlistId: playlists[menuid] }
jQuery.getJSON(URL, options, function (data) {
resultsLoop(data, menuid, apikey);
});
}
}
然后使用resultLoopeach()
将所有信息放入一些 HTML 中,以附加在网页的某个位置(我剥离了所有原始属性以保持其可读性)。
function resultsLoop(data, menuid) {
jQuery.each(data.items, function () {
var alttext = this.snippet.title;
var title = alttext.substring(0, 57) + '…'
var vid = this.snippet.resourceId.videoId;
var preview = this.snippet.thumbnails.standard.url;
jQuery("#carousel-" + menuid + " ul")
.append(`
<li>
<article>
<div>
<a href="//www.youtube.com/watch?v=${vid}&fs=1&autoplay=0&rel=0">
<img alt="${alttext}" src="${preview}">
</a>
</div>
<div>
<h4><a href="/index.php?Itemid=${menuid}" title="${alttext}">${title}</a></h4>
</div>
</article>
</li>
`);
});
}
在它的末尾,<img>
标签是
<img alt="some text" src="/$%7Bpreview%7D">
我尝试过了:
- 更改变量的名称
- 控制台记录它之前,之后
append()
,没有问题 typeof
说这是一个普通的字符串- 它在每个浏览器上都给了我相同的结果
我真的不明白我做错了什么,只有preview
不起作用,所有其他变量append()
都在正常工作。