2010-07-26 30 views
29

Sto eseguendo il loop delle celle in una riga della tabella. ogni cella ha una casella di testo, e voglio prendere il valore della casella di testo e spingerlo su una matrice.HTMLInputElement non ha alcun metodo '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); 
     }); 
    } 

C'è di più per la funzione, ma questo è tutto ciò che è rilevante. Per qualche ragione, quando eseguo questo codice, ottengo "HTMLInputElement non ha alcun metodo 'val'." Ho pensato che gli elementi di input dovevano avere un metodo val() in jQuery che ha ottenuto il valore, quindi questo non ha senso. Mi sto perdendo qualcosa o sto sbagliando?

risposta

63

val() è un metodo jQuery. .value è la proprietà dell'elemento DOM. Utilizzare [0].value o .eq(0).val() ....

+1

la tua risposta mi aiuta. grazie mille. – hiway

2
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

un po 'eccessivo per estrarre l'elemento grezzo e re-jQuerizzarlo .. –

+0

sì, sono d'accordo con te, ma volevo mostrare che il metodo val() è il metodo di $(), non un elemento DOM. – edtsech

2

.VAL() è un metodo di jQuery. Usando [0] restituisce l'elemento DOM, non l'elemento jquery

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

.val() è una funzione jQuery, non una funzione javascript. Pertanto, cambiare:

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

A:

var val = $(this).children('input:eq(0)').val() 
0

Quello che non capisco, è per questo che nessuno dei sintassi suggerite su questo o altre domande simili a questo sembra funzionare per me. Ho dovuto fare tentativi ed errori e alla fine ho dovuto usare:

MySelectElement.value = x;

Inoltre, non ha aiutato che i suggerimenti di Intellisense di Visual Studio offrano un'intera gamma di nomi di metodi non funzionanti, come ValueOf().

Problemi correlati