jQuery有以下代码:
var ths = $(".timetable__table th");
var th;
for (var i = 0; i < ths.size(); i++) {
th = ths.get(i).text();
console.log(th);
}
当我尝试执行此代码时,我收到以下异常:TypeError: ths.get(...).text is not a function
。我不明白为什么会发生,我只需要获取标签的文本值。我该如何解决?
答案 0 :(得分:2)
这样做,在此上下文中使用.each()
函数遍历jquery对象的集合。
$(".timetable__table th").each(function(){
console.log($(this).text());
});
.get(index)
将返回一个javascript对象,但不包含名为.text()
的函数
注意:请注意,版本1.8使用.size()
代替
.length
答案 1 :(得分:1)
因为.get()返回dom元素而不是jQuery对象(.text()
是jQuery包装器对象的方法)使用.eq()将返回一个jQuery对象
var ths = $(".timetable__table th");
var th;
for (var i = 0; i < ths.size(); i++) {
th = ths.eq(i).text();
console.log(th);
}
答案 2 :(得分:0)
.get()
返回底层DOM元素,它们没有text()方法。请改用.eq()
。
看起来您还没有决定是否要使用DOM或jQuery。您的代码可以简化为:
$(".timetable__table th").each(function(index, el) {
console.log($(el).text());
});
答案 3 :(得分:0)
您需要迭代像th[i]
这样的数组:
var ths = $(".timetable__table th");
var th;
for (var i = 0; i < ths.size(); i++) {
th = ths[i].text();
console.log(th);
}
但最简单的方法是在跳过循环的地方,只需使用.each
:
$(".timetable__table th").each(function(){
console.log($(this).text());
});