如何运行相同的JavaScript函数

时间:2011-10-08 22:58:43

标签: javascript algorithm function optimization name-collision

经过广泛的研究后,我无法找到适合我(相当)低技能的答案。如果你们中的任何一个人可以提供帮助,那将是一个很大的安慰。

我正在尝试在同一页面上运行此脚本两次,但我认为问题是onYouTubePlayerReady上的函数无法被调用两次而没有被最后覆盖。 此外,如果我更改其名称,则不会执行实际功能。

这是代码。我希望在同一页面中播放最多4个没有声音和自动播放的YouTube视频。你知道怎么可能吗?

感谢您的时间

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Prova 1</title>

<script src="http://www.google.com/jsapi" type="text/javascript"></script>
    <script type="text/javascript">
      google.load("swfobject", "2.1");
    </script> 

</head>

<body align="center">


<div id="ytapiplayer2"></div>

    <script type="text/javascript">
        function onYouTubePlayerReady2(playerId2) {
            ytplayer2 = document.getElementById("myytplayer2");
            ytplayer2.playVideo();
            ytplayer2.mute();
                }
        var videoID2 = "OFIhzSwDfwo"
        var params = { allowScriptAccess: "always" };
        var atts = { id: "myytplayer2" };
        swfobject.embedSWF("http://www.youtube.com/v/" + videoID2 + "?enablejsapi=1&playerapiid=ytplayer\
        &autoplay=1&version=3&showinfo=0&iv_load_policy=3&controls=0&modestbranding=1",
        "ytapiplayer2", "250", "inherit", "0", null, null, params, atts)
    </script>



<div id="ytapiplayer"></div>

    <script type="text/javascript">
        function onYouTubePlayerReady(playerId) {
            ytplayer = document.getElementById("myytplayer");
            ytplayer.playVideo();
            ytplayer.mute();
                }
        var videoID = "e5iqtQLm-BM"
        var params = { allowScriptAccess: "always" };
        var atts = { id: "myytplayer" };
        swfobject.embedSWF("http://www.youtube.com/v/" + videoID + "?enablejsapi=1&playerapiid=ytplayer\
        &autoplay=1&version=3&showinfo=0&iv_load_policy=3&controls=0&modestbranding=1",
        "ytapiplayer", "250", "inherit", "0", null, null, params, atts)
    </script>


</body>
</html>

1 个答案:

答案 0 :(得分:0)

使用参数而不是全局变量来避免副作用:

 function onYouTubePlayerReady2(playerId2, ytplayer2, video2, params, atts)

然后传入硬编码值,而不是在每次调用期间改变状态。