未捕获的TypeError:无法调用未定义的方法'toLowerCase'(Youtube API)

时间:2013-06-22 22:26:58

标签: javascript html youtube-api undefined

当我搜索问题时,我发现了这一个:Uncaught TypeError: Cannot call method 'toLowerCase' of undefined 我看了一遍,但在我的情况下似乎并不相关(我可能错了!)。

无论如何,我通过在我的HTML文件中加入“http://www.youtube.com/player_api”来使用Youtube Iframe API。 当我的页面准备就绪时,我将7个iframe添加到我的DOM中,它们获得了自己的id(示例id =“0”),我使用for循环更改了这个iframe,对于每个iframe,我调用了一个应用Youtube API功能的方法视频:

function addPlayerAPIToVideo(vidId, link, plId) {
    if (players[plId] === undefined) {
        players[plId] = new Array();
    }

    playlistPlayers[plId][vidId] = new YT.Player(vidId, { //Error comes from the YT.Player function
        videoId: link,
        events: {
            'onStateChange': onPlayerStateChange
        }
    });
}

vidId是我在调用此方法之前创建的iframe上的id。 在此错误期间,plId = = 0,并且该值不会影响结果(在本例中)。 link是Youtube视频标识符,长度为11个字符,如下所示:TMTpeDM7GN0。

我可能会补充一点,我可以一次调用此函数而不会收到任何错误,但第二次调用它时会收到错误(请参阅标题)。此外,Firefox告诉我“http://s.ytimg.com/yts/jsbin/www-widgetapi-vflZPZFPk.js”中第18行的问题是“TypeError: c.tagName is undefined”。

这变得相当长,但我试图尽可能彻底。

非常感谢所有帮助!

1 个答案:

答案 0 :(得分:5)

我遇到了一个非常相似的错误。我的问题似乎是我传入了一个JQuery元素而不是一个原始元素,并且它没有tagName。你的问题给了我所需的线索,非常感谢!也许您可以尝试自己获取元素而不是传入id,并确保获得具有tagName成员的对象。