2013-06-22 142 views
1

我在搜索问题时发现了这个问题:Uncaught TypeError: Cannot call method 'toLowerCase' of undefined 我查了一下,但它在我的案例中似乎并不相关(我可能是错的!)。Uncaught TypeError:无法调用未定义的方法'toLowerCase'(Youtube API)

无论如何,我正在使用Youtube Iframe API,在我的HTML文件中包含“http://www.youtube.com/player_api”。 当我的页面准备就绪时,我添加了7个iframe到我的DOM,他们得到了他们自己的id(例如id =“0”),我用for-loop改变了,对于每个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,并且该值不会影响结果(在这种情况下)。 链接是Youtube视频标识符,它的长度为11个字符,可以像这样:TMTpeDM7GN0。

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

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

所有帮助非常感谢!

回答

4

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

+0

谢谢,一年半后我再次遇到同样的问题,你的回答帮助我解决了它! – Daniel

相关问题