2011-01-18 105 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; 
}