web-dev-qa-db-fra.com

HTMLInputElement n'a pas de méthode 'val'

Je boucle en boucle dans les cellules d'une rangée de tableau. chaque cellule contient une zone de texte et je souhaite prendre la valeur de la zone de texte et la placer dans un tableau.

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

Theres plus à la fonction, mais c'est tout ce qui est pertinent. Pour une raison quelconque, lorsque je lance ce code, j'obtiens "HTMLInputElement n'a pas de méthode 'val'". Je pensais que les éléments d'entrée étaient supposés avoir une méthode val() dans jQuery qui obtenait la valeur, cela n'a donc aucun sens. Est-ce que je manque quelque chose ou est-ce que je me trompe?

31
The.Anti.9

val() est une méthode jQuery. .value est la propriété de l'élément DOM. Utilisez [0].value ou .eq(0).val()....

65
meder omuraliev

.val() est une fonction jQuery, pas une fonction javascript. Par conséquent, changez:

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

À:

var val = $(this).children('input:eq(0)').val()
16
Alex
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
edtsech

.val () est une méthode jquery. Utiliser [0] renvoie l'élément DOM, pas l'élément jquery

var val = $(this).children('input:first').val();
2
Ben Rowe

Ce que je ne comprends pas, c’est la raison pour laquelle aucune des syntaxes suggérées sur cette question ou d’autres questions similaires ne semble fonctionner pour moi. Je devais faire des essais et des erreurs et finalement utiliser:

MySelectElement.value = x;

Les suggestions de Visual Studio Intellisense n'offrent pas non plus une autre gamme de noms de méthodes non fonctionnelles, tels que ValueOf ().

0
Dronz