gpt4 book ai didi

javascript - 我如何能够显示文本而不总是得到这个未定义的错误

转载 作者:行者123 更新时间:2023-11-30 13:51:58 26 4
gpt4 key购买 nike

我试图随机显示文本,我制作了一个数组,然后我希望文本显示在叠加层中。不幸的是,我看到的文本是 undefined,尽管我已经准备好显示所有文本。

我还想知道如何延迟显示文本,因为当视频开始播放时我希望文本在 3 秒后出现。

<html>

<head>
<link rel="stylesheet" type="text/css" href="style.css" title="Default Styles"/>
<script>


var videos = [
{
id: 1,
url: "https://www.youtube.com/embed/wMBSO175eJw?autoplay=1",
text: "special text for video one"
},
{
id: 2,
url: "https://www.youtube.com/embed/eHDTNmnEg38?autoplay=1",
text: "special text for video two"
},
{
id: 3,
url: "https://www.youtube.com/embed/-gDfE0H_m_Q?autoplay=1",
text: "special text for video three"
},
{
id: 4,
url: "https://www.youtube.com/embed/ZIG6y3qBllU?autoplay=1",
text: "special text for video four"
},
{
id: 5,
url: "https://www.youtube.com/embed/6GEp_UxdCUQ?autoplay=1",
text: "special text for video five"
},
{
id: 6,
url: "https://www.youtube.com/embed/LiO5HiwVxnk?autoplay=1",
text: "special text for video six"
}

];

window.onload = function() {
var playerDiv = document.getElementById("random_player");
var player = document.createElement("IFRAME");
var previousId = localStorage.getItem("previousId");
if (previousId) {
var previousIndex = videos.findIndex(v => v.id === parseInt(previousId));
videos.splice(previousIndex, 1);
}
var current = Math.floor(Math.random() * videos.length);
localStorage.setItem("previousId", videos[current].id);
localStorage.getItem("previousId");
var randomVideoUrl = videos[current].url;
player.setAttribute("width", "640");
player.setAttribute("height", "390");
player.setAttribute("src", randomVideoUrl);
playerDiv.appendChild(player);
var textContainer = document.getElementById("r_text");
textContainer.innerHTML = videos[current].r_text;
};

var r_text = new Array ();
r_text[0] = "All leave are brown";
r_text[1] = "fafwfaf";
r_text[2] = "fakfjwkfkajwkfawjf";
r_text[3] = "cornflakes";
r_text[4] = "bannana";
r_text[5] = "Choclate";
r_text[6] = "lol";
var i = Math.floor(7*Math.random())



</script>
</head>


<div id="random_player">
<div id="r_text">
</div>
</div>


</html>

最佳答案

您的视频对象中没有key r_text。对象的视频数组与 r_text 之间没有任何联系。

我不知道你想达到什么目的。但是,如果您想访问视频对象中的文本,请改用 video[current].text

编辑: 如果您想使用 r_text 值。使用 r_text[i] 作为视频对象中 text 键的值。如果你想延迟文本的出现,你可以像下面的代码或 css 动画一样使用 setTimeout

检查下面

var r_text = new Array ();
r_text[0] = "All leave are brown";
r_text[1] = "fafwfaf";
r_text[2] = "fakfjwkfkajwkfawjf";
r_text[3] = "cornflakes";
r_text[4] = "bannana";
r_text[5] = "Choclate";
r_text[6] = "lol";
var i = Math.floor(7*Math.random())

var videos = [
{
id: 1,
url: "https://www.youtube.com/embed/wMBSO175eJw?autoplay=1",
text: r_text[i]
},
{
id: 2,
url: "https://www.youtube.com/embed/eHDTNmnEg38?autoplay=1",
text: r_text[i]
},
{
id: 3,
url: "https://www.youtube.com/embed/-gDfE0H_m_Q?autoplay=1",
text: r_text[i]
},
{
id: 4,
url: "https://www.youtube.com/embed/ZIG6y3qBllU?autoplay=1",
text: r_text[i]
},
{
id: 5,
url: "https://www.youtube.com/embed/6GEp_UxdCUQ?autoplay=1",
text: r_text[i]
},
{
id: 6,
url: "https://www.youtube.com/embed/LiO5HiwVxnk?autoplay=1",
text: r_text[i]
}

];

window.onload = function() {

var current = Math.floor(Math.random() * videos.length);

var textContainer = document.getElementById("r_text");
setTimeout(() => {
textContainer.innerHTML = videos[current].text;

}, 3000)

};
<div id="random_player">
<div id="r_text">
</div>
</div>

关于javascript - 我如何能够显示文本而不总是得到这个未定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58061144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com