未捕获的类型错误:无法读取属性'儿童'的未定义
Uncaught TypeError: Cannot read property 'children' of undefined
我需要获取指定类的所有div下的所有a元素的href属性。当我只处理一个div时没有问题,但当div的数量增加时,我会在问题的标题上出现错误。。here is my demo
,请看一看,不要忘记检查元素以获得错误消息(当您单击行说请单击此处获取结果时,将出现警报,同时控制台将出现js错误)
如果选择器修改为.pg-header a
,则map()
函数可用于检索所有hrefs
:
function get_sub_elements(){
var hrefs = $(".pg-header a").map(function(i,e){
return $(e).attr("href");
});
for(var i = 0; i < hrefs.length; i++){
alert(hrefs[i]);
}
}
JS Fiddle:http://jsfiddle.net/hth9Z/3/
更改了代码
$(".pg-header a").each(function(index,elem) {
console.log(elem);
});
选中此项:http://jsfiddle.net/3tyzd/1/
我认为,如果使用名称更好的变量,问题会更明显。。。
http://jsfiddle.net/hth9Z/4/
$(".pg-header").each(function(index,element) {
for(i=0;i<$(element)[index].children.length;i++)
{
if($(element)[index].children[i].localName=="a")
{
alert($($(element)[index].children[i]).attr("href"));
my_arr.push($($(element)[index].children[i]).attr("href"))
}
}
});
传递给函数的参数是一个索引和循环中的特定项。您正在做的是获取正在传递的一个元素(循环中的当前元素),并将其封装到一个jquery对象中。然后将索引应用于此。jquery对象中封装的一个对象仍然只是一个项,因此大于1的索引永远不合适。因此,在第二个循环中,当您将element
作为第二个匹配项,并且index
为1时,$(element)[index]
是未定义的,因此当您调用它上的方法时会出现错误。
事实上,您最好使用jQuery做更多这样的事情。像$(".pg-header a")
这样的东西将获得.pg-header
中的所有锚元素,然后您可以按照其他人的建议进行分析。
总之,请确保您了解您的参数是什么——给它们合理的名称将有助于实现这一点。
另请参阅http://api.jquery.com/each/获取有关您正在使用的方法的信息。
- 主干中的模型属性未定义
- JavaScript 2d 数组导致“无法读取未定义的属性'未定义'”
- JSON对象属性未定义
- Waypoint的循环,退出循环后属性未定义
- Javascript:错误“无法设置属性”..'未定义”
- 翡翠 - 显示对象属性 - 未定义
- 属性未定义,但控制台.log可以看到它
- JavaScript 对象的属性未定义
- Javascript 对象属性未定义(但属性已设置)
- DOM 元素属性未定义 - jquery / ruby on rails.
- Nodejs JSON 属性未定义
- 错误:窗口打开器的属性未定义
- angular Js:Array.lenght属性未定义
- 正在尝试访问JavaScript对象的属性=未定义
- Marionette属性未定义,请从API获取
- AngularJS作用域属性未定义
- 对象的属性未定义,尽管已指定值
- 为什么我一直收到一个错误,说对象属性未定义
- 对象属性未定义,但我看到它不是
- .map()img src属性未定义