【问题标题】:Uncaught TypeError: Cannot call method 'toLowerCase' of undefined (Youtube API)未捕获的类型错误:无法调用未定义的方法“toLowerCase”(Youtube API)
【发布时间】:2013-06-22 22:26:57
【问题描述】:

我在搜索问题时发现了这个问题: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,我调用了一个应用 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”。

这变得相当长,但我尽量做到详尽。

非常感谢所有帮助!

【问题讨论】:

    标签: javascript html youtube-api undefined


    【解决方案1】:

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

    【讨论】:

    • 谢谢,一年半后我又遇到了同样的问题,你的回答帮我解决了!
    猜你喜欢
    • 2011-11-12
    • 2014-07-06
    • 2016-03-25
    • 2018-05-16
    • 2013-08-31
    • 2013-09-14
    相关资源
    最近更新 更多