2011-01-18 145 views
1

我有這樣的HTML代碼:獲取文本框的值在Javascript

<table border="" cellpadding="3" cellspacing="0" id="mytable"> 

<tbody><tr><td>Song:</td> <td><input type="text" name="song" maxlength="64" size="48" /> </td></tr> 
<tr><td>Artist:</td> <td><input type="text" name="artist" maxlength="16" size="48" /> </td></tr> 

如何獲得「歌」和「藝術家」的價值觀?我曾嘗試:

var elTableCells = mytable.getElementsByTagName("td"); 
alert(elTableCells[2].value); 
alert(elTableCells[4].value); 

,但我不斷收到「未定義」即使有文本框裏面的文字

回答

4

首先,td元素沒有value屬性,因此調用.value就不會做任何事情。其次,該值實際上是input元素,因此您需要改爲mytable.getElementsByTagName('input')。更好的辦法是給你的輸入字段id,然後使用getElementById。這意味着你可以在不改變JS的情況下改變你的HTML。

1

下載jquery

jQuery("input[name='song']").val() 

要嘗試解決下面的參數。這可以用上面的普通javascript來解決,但爲了簡化和跨瀏覽器標準化,我會推薦jQuery。它是一個被廣泛使用且通常被高度推薦的圖書館。

+7

jQuery並不是每個Javascript問題的答案 – lonesomeday 2011-01-18 21:56:27

+0

更簡單的替代`$(「input [name ='song']」)。val()` – Dutchie432 2011-01-18 21:57:15

1
var song = document.getElementsByName("song").value; 
var artist = document.getElementsByName("artist").value; 
1

這裏相關的tagName是「input」,而不是td。這會讓你找到你想要的。

這幾乎是StackOverflow上的陳詞濫調,但我建議你看看JQuery。 JQuery允許你把你的html作爲一個數據庫並且查詢它來獲得這種東西。如果您的標記是這樣的:

<input type="text" id="song" maxlength="64" size="48" /> 

你可以得到這樣的價值:

$("#id").value(); 

如果你想獲得它的maxlength屬性的值,你可以這樣做:

$("#id").attr("maxlength"); 

比挖掘元素數組更有趣。

0
alert(document.getElementsByName("song")[0].value); 
alert(document.getElementsByName("artist")[0].value); 
0

我覺得這有效地工作,下面我從一個asp.net文本框中獲取日期,然後獲取今天的日期。然後,我通過函數發送兩個日期以獲取需要進行計算的月數(請注意代碼使用Infragistics庫(如果您打算複製和粘貼,請用標準JavaScript調用替換這些調用):

function calculateMonthlyRepayment() 

    var tStartDate = $find('dp_Start_Date'); 
    var startDate = tStartDate.get_value(); 
    var today = new Date(); 
    var numMonths = monthDiff(startDate, today);  
    var rate = igedit_getById('WebNumericEdit_InterestRate').getValue() * 0.01; 
    var intRate = (rate/100)/12; 
    var principal = igedit_getById('WebCurrencyEdit_Proposed_Owing').getValue(); 
    var repayment = (principal * (Math.pow((1 + intRate), numMonths)) * intRate/(Math.pow((1 + intRate), numMonths) - 1)); 

    igedit_getById('txt_Monthly_Repayment').setValue(repayment); 

} 
function monthDiff(d1, d2) { 
    var months; 
    months = (d2.getFullYear() - d1.getFullYear()) * 12; 
    months -= d1.getMonth() + 1; 
    months += d2.getMonth(); 
    return months <= 0 ? 0 : months; 
}