HTMLInputElement не имеет никакого метода 'val'

Я - цикличное выполнение через ячейки в строке таблицы. каждая ячейка имеет текстовое поле в ней, и я хочу принять значение текстового поля и продвинуть ее на массив.

function dothing() {
        var tds = $('#'+selected+' td');
        var submitvals = new Array();
        tds.each(function(i) {
            var val = $(this).children('input')[0].val();
            submitvals.push(val);
        });
    }

Существует больше к функции, но это - все, что релевантно. По некоторым причинам, когда я выполняю этот код, я получаю "HTMLInputElement, не имеет никакого метода 'val'". Я думал, что входные элементы, как предполагалось, имели a val() метод в jQuery, который получил значение, таким образом, это не имеет никакого смысла. Я пропускаю что-то или делаю его неправильно?

31
задан kiamlaluno 6 June 2013 в 09:31
поделиться

4 ответа

val() - это метод jQuery. .value - это свойство DOM-элемента. Используйте [0].value или .eq(0).val()....

65
ответ дан 27 November 2019 в 21:41
поделиться
function dothing() {
    var tds = $('#'+selected+' td');
    var submitvals = new Array();
    tds.each(function(i) {
        var val = $($(this).children('input')[0]).val();
        submitvals.push(val);
    });
}
2
ответ дан 27 November 2019 в 21:41
поделиться

.val() - это функция jQuery, а не функция javascript. Therefore, change:

var val = $(this).children('input')[0].val()

To:

var val = $(this).children('input:eq(0)').val()
16
ответ дан 27 November 2019 в 21:41
поделиться

.val() - это метод jquery. Использование [0] возвращает элемент DOM, а не элемент jquery

var val = $(this).children('input:first').val();
2
ответ дан 27 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: