【发布时间】:2012-02-24 20:32:14
【问题描述】:
我从以下 JS 的标题中得到错误:
$('.videoMedia .youtubeLink').each(function(i) {
// Defining the iframe for each iteration
var iframe = $(this).parents('li').find('.portfolio_det iframe');
// Cutting the src from the iframe in pieces
var begin = 'http://www.youtube.com/embed/'.length;
var end = iframe[0].src.length-'?fs=1&feature=oembed'.length;
未捕获的类型错误:无法读取未定义的属性“src”
// Substracting the pieces
var videolink = iframe[0].src.substring(begin,end);
// Replacing the link with the leftovers
$(this).attr('href', 'http://www.youtube.com/watch?v=' + videolink);
// Removing the iframe
$(iframe).remove();
});
任何想法为什么它认为它未定义?由于 iframe 是在函数之上定义的。欢迎提出建议:)
编辑
此脚本在“action”中的示例(不确定这样称呼它,因为没有任何动作正在进行)见于:http://sqps.nl/bdare/?page_id=279
目前它仅适用于右侧/底部的最后一个元素(使用 bdare / youtube img)
编辑 2
奇怪的是,它以前可以工作(在本地主机上使用 xampp)
编辑 3 - 已修复问题
在此我要感谢所有参与此讨论的人 :) 我找到了解决方案..我的代码没有任何问题:) 来自 wordpress 帖子的输入导致脚本无法正常运行,更改帖子的内容解决了问题:)
干杯:)
【问题讨论】:
-
您是否尝试过
console.log(iframe)以确保它获取元素?我怀疑这是因为您使用的是[0],它可能没有返回数组/节点列表。 -
您能否也发布您的 HTML,以便我们可以看到它的结构,并了解您需要如何遍历它。另外,如果你运行这个:
alert(iframe.length)如果你看到0,这意味着你的 iframe 没有被发现。 -
您的选择器没有选择任何 iframe。因此
iframe[0]是undefined,而undefined.src不存在。你能显示你的 HTML 代码吗? -
我刚刚检查了您网站的 HTML,问题是
.find('.portfolio_det iframe')选择器 -.portfolio_det元素不包含 iframe。 -
.portfolio_det 仅在 li.videoMedia 的第一次迭代中不包含 iframe。其他 2 个确实包含一个 .portfolio_det。所以对我来说还是有点奇怪
标签: javascript jquery undefined typeerror