2010-07-26 3 views
29

Я перебираю ячейки в строке таблицы. каждая ячейка имеет в нем текстовое поле, и я хочу взять значение текстового поля и нажать его на массив.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); 
     }); 
    } 

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

ответ

63

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

+1

Ваш ответ мне помогает. thx очень много. – 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

немного перехитрить, чтобы извлечь исходный элемент и повторно jQuerize его. –

+0

да, согласитесь с вами, но я хотел показать, что метод val() - это метод $(), не являющийся элементом DOM. – edtsech

2

.val() представляет собой метод JQuery. Используя [0] возвращает элемент DOM, не JQuery элемент

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

.val() является функцией JQuery, а не Java-функции. Поэтому изменить:

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

To:

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

То, что я не понимаю, почему ни один из предложенных вариантов синтаксиса по этому или другим вопросам, подобных этому, кажется, работает для меня. Мне пришлось делать проб и ошибок и в конечном итоге пришлось использовать:

MySelectElement.value = x;

Это также не помогло, что предложения Visual Studio Intellisense предлагают целый ряд неработающих имен методов, таких как ValueOf().

Смежные вопросы