Obtener los valores de los cuadros de texto en Javascript

Tengo este código html:

¿Cómo obtengo los valores de “canción” y “artista”? Yo he tratado:

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

pero sigo “indefinido” incluso cuando hay texto dentro del cuadro de texto

En primer lugar, los elementos td no tienen un atributo de value , por lo que llamar a .value en ellos no hará nada. En segundo lugar, el valor está realmente en el elemento de input , por lo que necesita hacer mytable.getElementsByTagName('input') lugar. Aún mejor sería dar su ID de campos de entrada y luego usar getElementById . Esto significa que podrías alterar tu HTML sin que tu JS se rompa.

El tagName que es relevante aquí es “input”, no td. Eso te dará lo que estás buscando.

Es casi un cliché en StackOverflow, pero le sugiero que eche un vistazo a JQuery. JQuery le permite tratar su html como una base de datos y consultarlo para obtener este tipo de cosas. Si su marcado fue así:

  

Podrías obtener el valor así:

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

Si desea obtener el valor del atributo maxlength en él, puede hacer esto:

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

Mucho más divertido que excavar a través de matrices de elementos.

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

Descargar jquery

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

Para tratar de resolver el argumento a continuación. Esto puede ser un javascript simple como el anterior, pero para simplificar y cruzar la estandarización del navegador, recomendaría jQuery. Es una biblioteca ampliamente utilizada y generalmente altamente recomendada.

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

Encuentro que esto funciona de manera efectiva. A continuación, obtengo una fecha de un cuadro de texto de asp.net y luego obtengo la fecha de hoy. Luego envío ambas fechas a través de una función para obtener el número de meses que necesito para hacer mi cálculo (tenga en cuenta que el código usa bibliotecas Infragistics (si intenta copiar y pegar, reemplace esas llamadas con llamadas estándar a 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; } 

Song:
Artist: