为什么我的for循环不能在javascript中继续?

时间:2014-06-10 14:55:06

标签: javascript for-loop youtube-javascript-api

我正在尝试根据他们的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>

1 个答案:

答案 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;
}