Я пытаюсь выяснить, как получить значение кнопки с помощью JavaScript. Существует несколько кнопок, сгенерированных с использованием оператора while в php-коде, поэтому name
и id
одинаковы для всех них. Единственное различие между ними – это значение.
Часть моего PHP-кода:
while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td align=\"center\"><input type=\"button\" id=\"details\" name=\"details\" value=\"" . $row['mcn'] . "\" onClick=\"MCNdetails()\"></td>"; echo "</tr>"; }
То, что я пытаюсь достичь, заключается в том, что при нажатии этой кнопки на эти данные записей отображается предупреждение JavaScript.
(FYI – «Faker» – это имя формы, в которое эта таблица входит.)
Мой код JavaScript:
function MCNdetails() { var buttonDetails = document.Faker.details; var buttonValue = buttonDetails.value; if (buttonValue === "2700-2057" ) { alert ("Details are here"); return; } else { alert ("No Dice " + buttonValue); return; } }
У меня ок. До 300 записей. Когда я нажимаю на ЛЮБОЙ из кнопок, я всегда получаю оператор else. Я попытался получить элемент по id следующим образом:
function MCNdetails() { var buttonDetails = document.getElementById("details"); var buttonValue = buttonDetails.value; if (buttonValue === "2700-2057" ) { alert ("Details are here"); return; } else { alert ("No Dice " + buttonValue); return; } }
Но это всегда возвращало значение первой кнопки, независимо от того, на какой из них я нажал.
Я выполнил поиск в Google, а также выполнил поиск на этом сайте, и я не могу найти тот же самый сценарий, где создаются кнопки.
Любая помощь или указатели будут оценены. Спасибо за ваше время 🙂
попробуйте что-нибудь вроде
<script type="text/javascript"> function getVal(value) { alert(value); } </script> <input type="button" value="Add" onclick="getVal(this.value)">
Обратите внимание, что использование одного и того же идентификатора для нескольких элементов является недопустимым html, хотя большинство (все?) Браузеров, как правило, не беспокоятся об этом, и они все равно будут отображать страницу довольно счастливо. Вот почему, когда вы пытались использовать document.getElementById("details")
он всегда давал вам первую кнопку с этим идентификатором – как браузер знал бы, что вы имели в виду?
Сказав это, если вы передадите this
в вызове функции при нажатии:
onClick=\"MCNdetails(this)\"
…, который даст функции прямой ссылке на конкретную кнопку, которая была нажата. Итак, тогда:
function MCNdetails(btn) { var buttonValue = btn.value; // etc }
В этом случае вашим кнопкам действительно не нужны идентификаторы. Но если вы сохраните идентификаторы, вы должны найти способ сделать их уникальными (например, добавить порядковый номер в конец каждого).