我正在尝试根据他们的ID获取YouTube视频的标题和观看次数。我有那个部分工作,但由于某种原因,我的for循环不会继续第一次迭代。我是非常非常新的JavaScript,并且想知道是否有人可以帮助我。谢谢。代码如下。
<html>
<head>
<title>TEDxBeaconStreetViewCount</title>
<script type="text/javascript">
var de;
var numVids = 2;
var videos = new Array("Evi357e1spA", "le2dkeYnEzA");
function start(){
for(var i = 0; i < numVids+1; i++){
de = 'demo_' + i.toString();
// alert(de);
getVideoInformation(videos[i], de); return(false);
//console.log (de);
}
}
function registerScript(url) {
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = url;
document.getElementsByTagName('head')[0].appendChild(s);
}
function videoInfoCallback(info) {
if (info.error) {
alert('Error\n\n' + info.error.message);
} else {
var title = info.data.title;
var viewCount = info.data.viewCount;
try {
if (JSON && JSON.stringify) {
message += "\n\n" + JSON.stringify(info);
}
} catch (e) {
}
document.getElementById(de).innerHTML = "Title: " + title + "<br>" + "Views: " + viewCount;
}
}
function getVideoInformation(vID) {
var id = vID;
registerScript('https://gdata.youtube.com/feeds/api/videos/' + id + '?v=2&alt=jsonc&callback=videoInfoCallback');
}
</script>
</head>
<body>
<input type="button" onclick="start()" value="Get Video information" />
<p id="demo_0">_</p>
<p id="demo_1">_</p>
</body>
</html>
答案 0 :(得分:1)
它只运行一次,因为你的循环中有一个return语句,这将使它完全退出start函数。
function start(){
for(var i = 0; i < numVids+1; i++){
de = 'demo_' + i.toString();
getVideoInformation(videos[i], de);
//the statement below makes it exit the function
return(false);
}
}
你也可以完全摆脱numVids变量。也许您想尝试将其更改为:
function start(){
for(var i = 0; i < videos.length; i++){
de = 'demo_' + i.toString();
getVideoInformation(videos[i], de);
}
return false;
}