31 votes

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

Je suis en boucle par les cellules dans une ligne de table. chaque cellule a une zone de texte, et je veux profiter de la valeur de la zone de texte et le faire glisser sur 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 quelque raison, quand j'exécute ce code, j'obtiens un "HTMLInputElement n'a pas de méthode 'val'." Je pensais que les éléments d'entrée sont censés avoir un val() méthode jQuery qui a de la valeur, de sorte que cela n'a aucun sens. Ai-je raté quelque chose, ou de faire le mal?

65voto

meder Points 81864

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

16voto

Alex Points 21247

.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()
 

2voto

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

2voto

Ben Rowe Points 15269

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

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

0voto

Dronz Points 387

Ce que je ne comprends pas, c'est pourquoi aucune des syntaxes suggérées sur cette question ou sur d'autres questions similaires ne semble fonctionner pour moi. J'ai dû faire des essais et des erreurs et j'ai finalement dû utiliser:

MySelectElement.value = x;

Cela n'a pas aidé non plus que les suggestions de Visual Studio Intellisense offrent une toute autre gamme de noms de méthode non fonctionnels, tels que ValueOf ().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X