【发布时间】:2020-04-30 22:00:49
【问题描述】:
我正在尝试动态更改 YouTube API onclick 的 videoID。我有一个数据 src 包含 YouTube URL 的项目列表。当用户单击链接时,会弹出一个正在播放该特定视频的模式。视频结束后,它会重定向到另一个页面。
如果我对 ID 进行硬编码,它可以很好地工作,但我做不到。
我唯一担心的是由于 JavaScript 范围,我无法获取 videoID。你有什么推荐我试试的吗?
$(document.body).on('click', ".video-btn", function (e) {
var $videoSrc = $(this).data("src");
console.log($videoSrc);
var **getVidID** = $videoSrc.substring(26);
console.log(getVidID);
});
var tag = document.createElement('script');
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
playerVars: {
'controls': 0
},
width: 1920,
height: 1080,
videoId: **getVidID,** I'd like to use the videoID here
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
};
function onPlayerReady(event) {
event.target.playVideo();
};
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED && !done) {
alert('Taking you to Review Material Now..')
window.location.replace("http://www.google.com");
done = true;
}
};
【问题讨论】:
-
一种选择是将 id 变量移动到全局范围,然后在函数内分配一个值。另一种选择是从函数返回 id 并将其分配给函数外部范围内的变量。
-
@devlincarnate 感谢您的回复。我可以返回 getVidID,但我想知道如何在范围之外调用该函数?你能给我一个例子吗?您不必使用我的示例。
-
不清楚您在最后一条评论中要问什么。如果您返回其值并将其分配给变量,则该变量不会“超出范围”,如果您使用全局变量,它也不会超出范围。也许您需要更新您的帖子并向我们展示您希望在代码中的哪个位置使用 id ?
-
@devlincarnate 没问题。为混乱道歉。我有一个链接列表,这些链接都包含指向 YouTube 视频的不同 URL。当我点击链接时,我得到了 ID,但我需要在 onYouTubeIframeAPIReady() 函数中使用它。你会在我的编辑中看到确切的位置。当我对视频 ID 进行硬编码时,效果很好,但我需要它能够在用户单击链接时获取 ID。很难弄清楚。
-
这能回答你的问题吗? Access variable outside function scope
标签: javascript jquery api frontend