TypeError:.val不是函数

时间:2015-04-24 11:05:58

标签: javascript jquery

我有以下代码,我选择所有以相同名称开头的匹配元素,不包括我不希望包含在组中的元素。

var myInputBoxes= $('input[id ^= "SubjectText"]').not('#SubjectTextNew');
for (i = 0 ; i < myInputBoxes.length; i++){
    var SubjectId = myInputBoxes[i].id.replace('SubjectText', '');
    var Subject = myInputBoxes[i].val();
}

这在firefox中给出了以下错误

  

TypeError:myInputBoxes [i] .val不是函数

为什么它会在val函数上失败?

2 个答案:

答案 0 :(得分:34)

使用括号表示法访问jQuery对象会返回一个没有val()函数的DOMElement。如果要在匹配的集合中按索引检索元素,则需要使用eq()

var Subject = myInputBoxes.eq(i).val();

或者,您可以保留DOMElement并使用value属性:

var Subject = myInputBoxes[i].value;

答案 1 :(得分:1)

因为subjectBoxes[i]不是jQuery对象,如果它是一个jQuery对象,那么你可以使用.eq()来获取传递索引处元素的jQuery包装器引用

var myInputBoxes = $('input[id ^= "SubjectText"]').not('#SubjectTextNew');
myInputBoxes.each(function (e, el) {
    var SubjectId = this.id.replace('SubjectText', '');
    var Subject = subjectBoxes.eq(i).val();
})