#javascript #php #foreach
#javascript #php #foreach
Вопрос:
У меня есть цикл PHP, созданный динамически с двумя текстовыми полями и одним столбцом результатов.
Что мне нужно, так это просто умножить значения, вводимые в первые два поля, и показать результат в ближайшем окне результатов.
Цикл PHP
<?php
$sql=$db->query("SELECT * FROM calc");
foreach($sql as $row)
{
?>
<div class="calc">
<input type="text" id="txt1id<?= $row['id'] ?>" onkeyup="multiple()">
<input type="text" id="txt2id<?= $row['id'] ?>" onkeyup="multiple()">
<input type="text" id="resultid<?= $row['id'] ?>" title="Result shows here automatically">
</div>
<?php } ?> // loop ends here.
И скрипт
<script>
function multiple()
{
// how to get two different variables like this with different id to multiple ?
var firstBox = parseInt(document.getElementById(firstid).value);
var secondBox = parseInt(document.getElementById(secondid).value);
}
</script>
Комментарии:
1. где вам нужны значения php? или где находится цикл php?
2.
div class='calc'
создается циклом php, таблица php содержит другие значения, но не включена здесь, здесь идентификаторы получены из базы данных .. напримерtxt1id1,txt2id1
и т.д.3. можете ли вы также поделиться кодом php?
4. пожалуйста, проверьте изменения
Ответ №1:
Передайте идентификатор строки функции следующим образом
<div class="calc">
<input type="text" id="txt1id<?= $row['id'] ?>" onkeyup="multiple(<?= $row['id'] ?>)">
<input type="text" id="txt2id<?= $row['id'] ?>" onkeyup="multiple(<?= $row['id'] ?>)">
<input type="text" id="resultid<?= $row['id'] ?>" title="Result shows here automatically">
</div>
И изменить в JS, как показано ниже
<script>
function multiple(rowid)
{
var firstBox = parseInt(document.getElementById("txt1id" rowid).value);
var secondBox = parseInt(document.getElementById("txt2id" rowid).value);
}
</script>
Комментарии:
1.
var secondBox = parseInt(document.getElementById("txt1id" rowid).value);
, txt1id должно бытьtxt2id
.. верно?2. Также проверьте rowid в консоли внутри функции
console.log("Row id :" rowid);
3. вы отлично справились и быстро .. я проверю