2012-02-24 109 views
1

财产“SRC”我从标题在后续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; 

遗漏的类型错误:无法读取属性未定义

// 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(); 
}); 

“SRC”任何想法为什么它认为它的未定义?由于iframe是在函数的顶部定义的。建议欢迎:)

编辑这个脚本在“行动”

例如(不是一定要这样称呼它,因为那里是不是任何行动正在进行)上看到:http://sqps.nl/bdare/?page_id=279

目前,它仅适用于右侧/底部的最后一个元素(与bdare/YouTube的IMG)

编辑2

奇怪的是,它使用前的工作(使用XAMPP本地主机)

编辑3 - 问题fixxed

这里,我要感谢大家谁参加这个讨论:) 我发现该解决方案..没有错我的代码在所有:) 从WordPress后输入从正常运行,改变了帖子的内容引起脚本fixxed问题:)

干杯:)

+0

您是否尝试过'console.log(iframe)'以确保它获取元素?我怀疑这是因为你正在使用'[0]',它可能不会返回数组/节点列表。 – 2012-02-24 11:31:27

+0

你也可以发布你的HTML,以便我们可以看到它的结构,并看看你需要如何遍历它。另外,如果你运行这个:'alert(iframe.length)',如果你看到'0',这意味着你的iframe没有被找到。 – 2012-02-24 11:32:29

+0

您的选择器不会选择任何iframe。因此'iframe [0]'是'undefined',并且'undefined.src'不存在。你能显示你的HTML代码吗? – 2012-02-24 11:32:50

回答

1

这个line:

var iframe = $(this).parents('li').find('.portfolio_det iframe'); 

没有找到任何元素。这意味着iframe[0]是未定义的而不是对象,所以任何尝试访问属性都会导致出现错误。

验证您的标记是否正确。

+0

也许我错了,但如果'iframe [0]'仍然是一个jQuery对象,即使标记正确,src'也是不确定的 – 2012-02-24 11:35:07

+1

@Nicola:'iframe [0]'won' t是一个jQuery对象。 'iframe'是一个jQuery对象,'[0]'是尝试从该jQuery对象访问DOM元素。 – 2012-02-24 11:36:49

+0

好吧,我想你'get(0)'访问DOM元素 – 2012-02-24 11:38:34

-1

尝试代替

var end = iframe.get(0).src.length-'?fs=1&feature=oembed'.length; 

iframe是一个jQuery对象的引用,以便iframe[0]它。这就是为什么你有一个错误:src不是jQuery对象的有效属性

+0

'.get(0)'和'[0]'是同义词,jQuery对象的数字属性通常是DOM对象,而不是jQuery对象。 – 2012-02-24 11:40:39