2010-07-26 64 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'。」我認爲輸入元素應該在jQuery中有一個val()方法,它獲得了值,所以這沒有意義。我錯過了什麼,或者錯了嗎?

回答

63

val()是一個jQuery方法。 .value是DOM元素的屬性。使用[0].value.eq(0).val() ....

+1

你的回答可以幫助我。 thx非常。 – hiway 2013-03-22 03:14:43

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它.. – 2010-07-26 06:41:57

+0

是的,同意你,但我想顯示val()方法它的方法$(),而不是DOM元素。 – edtsech 2010-07-26 06:51:37

2

.VAL()是一個jquery方法。使用[0]返回DOM元素,而不是jquery的元件

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

.val()是一個jQuery函數,而不是一個JavaScript功能。因此,更改:

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

要:

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

我不明白,這就是爲什麼沒有在這個或類似於此的其他問題建議的語法似乎爲我工作。我必須做試驗和錯誤,並最終不得不使用:

MySelectElement.value = x;

它也沒有幫助Visual Studio Intellisense建議提供了其他一些非工作方法名稱,如ValueOf()。

相關問題