创建具有视频 ID 和字幕的数组

Creating an array with video IDs and Titles

提问人:flexdev 提问时间:6/9/2023 最后编辑:flexdev 更新时间:9/12/2023 访问量:28

问:

我正在尝试创建一个循环,该循环将创建一个包含视频标题的视频缩略图。

我目前设置了函数来获取 ID,并且可以获取循环来生成缩略图和链接,我将如何写出数组或函数以包含标题?

这是我目前的布局。

var Ids = "id1,id2,id3";

 if (typeof Ids === 'undefined') { Ids = ""; }
 var vIds = Ids.split(",");

$.each(vIds, function(index,value) {

 $('.vrow').append('<button type="button" class="btn btn-link col-lg-2 col-md-2 col-sm-2 col-xs-6 vid vid'+index+'"><img src="https://img.youtube.com/vi/'+value+'/mqdefault.jpg" alt="" /><span><i class="fa fa-play"></i></span></button>');
 });

我确实尝试为标题使用一个单独的数组,但它只创建了更多的循环,并且没有呈现 YT ID。

是否可以将数组同时用于 ID 和 Title?如果是这样,我将如何映射标题值?这会被视为多维数组吗?

var Ids = "id1,title1,id2,title2";
jQuery 数组 循环

评论


答:

0赞 user2342558 6/9/2023 #1

首先,ID 的间距不得为 ,否则您将得到以下内容: id2id2

var Ids = "id1,id2,id3";

要同时插入标题,您可以使用另一个不同的字符作为分隔符,例如:

var iDsWithTitle = "id1|title1,id2|title2,id3|title3";

请注意,标题可能包含 ,因此应选择其他分隔符,例如 。,|

更好的方法是使用 json 字符串来存储这些数据,然后将其转换为要循环的对象。

评论

0赞 flexdev 6/10/2023
谢谢!我的代码将 ID 连接在一起。我应该让它看起来更准确。从 iDsWithTitle 变量中,我将如何映射标题?
0赞 imvain2 6/10/2023 #2

您可以创建一个数组对象,如下所示。然后,每个对象都将包含视频的信息。然后只需遍历数组并引用视频的信息即可。

let videos = [
{"id": "id1","title": "Video Title 1"},
{"id": "id2","title": "Video Title 2"},
{"id": "id3","title": "Video Title 3"},
{"id": "id4","title": "Video Title 4"}
];

$.each(videos, function(index,video) {
  $('.vrow').append('<button type="button" class="btn btn-link col-lg-2 col-md-2 col-sm-2 col-xs-6 vid vid' + video.id + '"><img src="https://img.youtube.com/vi/' + video.id + '/mqdefault.jpg" alt="" /><span><i class="fa fa-play"></i></span></button>');

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="vrow"></div>

0赞 flexdev 9/12/2023 #3

感谢您的更新和回答。我考虑了你的考虑,我也必须考虑一些事情,我需要代码为那些不随时使用代码的人工作,因此必须降低损坏和 UI 的风险。

我决定为每个 ID 和 Title 创建一个变量,然后通过 Split 创建一个数组。您所要做的就是粘贴您的 ID/标题并用逗号分隔。

var Ids = '';
var Titles = '';

if (typeof Ids === 'undefined') { Ids = ""; }
if (typeof Titles === 'undefined') { Titles = ""; }
var vIds = Ids.split(",");
var Vtls = Titles.split(",");

然后我创建了一个循环来创建按钮。这完美地设置了缩略图、要播放的视频 ID 并添加了字幕。

$.each(vIds, function(index,value) {
 //console.log(index,value);
 
 //first video gets set as featured
 $('iframe').attr('src','https://www.youtube.com/embed/'+vIds[0]);
 $('h3').text(Vtls[0]);

//create video button
  $('.vrow').append('<button type="button" class="btn btn-link col-lg-2 col-md-2 col-sm-2 col-xs-6 vid vid'+index+'"><img src="https://img.youtube.com/vi/'+value+'/mqdefault.jpg" alt="" /><span><i class="fa fa-play"></i></span><span class="vtitle">'+Vtls[index]+'</span></button>');
  
//create video swap function
 $('button.vid'+index).click(function() { 
   $('iframe').attr('src','https://www.youtube.com/embed/'+value);
   $('h3').text(Vtls[index]);     
});
  
//if no videos, remove video div
if (vIds.length < 1) { $('.videos-section-inner').remove(); }
if (vIds.length === 1) { $('button.vid'+index).remove(); }
  
  //end loop
});