Получение значений текстовых полей в Javascript - PullRequest
1 голос
/ 19 января 2011

У меня есть этот HTML-код:

<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>

Как мне получить значения "song" и "artist"? Я пробовал:

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

но я получаю "неопределенный", даже когда внутри текстового поля есть текст

Ответы [ 6 ]

4 голосов
/ 19 января 2011

Во-первых, td элементы не имеют атрибута value, поэтому вызов .value для них ничего не изменит. Во-вторых, значение на самом деле находится в элементе input, поэтому вам нужно сделать mytable.getElementsByTagName('input') Еще лучше было бы указать идентификаторы полей ввода и затем использовать getElementById. Это будет означать, что вы можете изменить свой HTML без нарушения JS.

1 голос
/ 19 января 2011

TagName, которое здесь уместно, это «input», а не td.Это даст вам то, что вы ищете.

Это почти штамп на StackOverflow, но я предлагаю вам взглянуть на JQuery.JQuery позволяет вам рассматривать ваш html как базу данных и запрашивать его, чтобы получить такие вещи.Если бы ваша разметка была такой:

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

Вы могли бы получить значение следующим образом:

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

Если вы хотите получить значение атрибута maxlength, вы можетеthis:

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

Намного веселее, чем копаться в массивах элементов.

1 голос
/ 19 января 2011
var song   = document.getElementsByName("song").value;
var artist = document.getElementsByName("artist").value;
1 голос
/ 19 января 2011

Скачать jquery

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

Чтобы попытаться решить аргумент ниже. Это может быть связано с простым javascript, как указано выше, но для простоты и кросс-браузерной стандартизации я бы рекомендовал jQuery. Это широко используемая и обычно очень рекомендуемая библиотека.

0 голосов
/ 13 февраля 2018

Я считаю, что это работает эффективно. Ниже я получаю дату из текстового поля 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;
}
0 голосов
/ 19 января 2011
alert(document.getElementsByName("song")[0].value);
alert(document.getElementsByName("artist")[0].value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...