无法读取未定义的属性'src'

时间:2012-02-24 11:28:25

标签: javascript jquery undefined typeerror

我从以下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;

未捕获的TypeError:无法读取未定义的属性'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是在函数之上定义的。建议::)

修改

“动作”中的此脚本示例(不一定要像这样调用,因为没有任何动作正在进行):http://sqps.nl/bdare/?page_id=279

目前它仅适用于右/底部的最后一个元素(使用bdare / youtube img)

修改2

奇怪的是,它曾经在(在使用xampp的localhost上)工作

编辑3 - 问题修复

特此感谢参加讨论的各位:) 我找到了解决方案..我的代码完全没有问题:) 来自wordpress帖子的输入激发了脚本正常运行,更改帖子内容修复问题:)

干杯:)

2 个答案:

答案 0 :(得分:1)

这一行:

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

找不到任何元素。这意味着iframe[0]未定义而不是对象,因此任何属性访问尝试都将导致您获得的错误。

验证您的标记是否正确。

答案 1 :(得分:-1)

尝试改为

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

iframe是对jQuery对象的引用,因此它是iframe[0]。这就是您收到错误的原因:src不是jQuery对象的有效属性