Я перемещаюсь по простому циклу foreach, чтобы получить «сообщения в блоге». Он показывает основную информацию о блоге, кнопку ответа и удаления. Когда я нажимаю кнопку «ответить», появляется небольшая форма под кнопкой ответа для заполнения. Проблема в том, что функция, которой я передаю переменную, получает только последний идентификатор формы. Как изменить свою функцию или элемент div, чтобы он был уникальным для каждого экземпляра?
Я попытался настроить переменную PHP @echo для «id» и функции, я проверил все открывающие и закрывающие скобки в 10 раз. Я пробовал использовать разные методы GetElementBy.... Я начал изучать Jquery, но хотел закончить только с помощью PHP/Javascript.
<?php foreach ($mainentries as $entry) :
$subentryID = $entry['SubEntryID'];
if ($subentryID == "0")
{ ?>
<div><tr><td><?php echo ('#'.$entry['EntryID'].' - ')?></td>
<td><?php echo $entry['Body']; ?></td>
<br />
<?php foreach($subentries as $subentry) : ?>
<?php if ($subentry['SubEntryID'] == $entry['EntryID'])
{ ?>
<div id = "subposts">
<td><td><td>#<?php echo $subentry['EntryID'];?></td><br>
<td>
<?php echo $subentry['Body']; ?>
</td></td></td>
</div>
<?php } endforeach; ?>
<br />
<td>
<button onclick = "cookiechecksub()">Reply</button>
<?php echo $entry['EntryID'];
$subform = $entry['EntryID']; ?>
<div id = "<?php echo $subform?>" style = "display:none">
<form action = "Add_subentry.php" method = "post" id = "Add_subentry">
<label>Title:</label><br />
<input type = "text" name = "Title" class = "Title"/> <br />
<label>Body</label><br />
<div class = "area">
<input type = "textarea" name = "Body" class = "Body"/><br />
</div>
<input type = "hidden" readonly = "true" name = "EntryID" value = "<?php echo $entry['EntryID']; ?>" />
<input type=submit id = "btnReply" value = "Submit Reply"/>
</form>
</div></td>
<td>
<form action = "Delete_entry.php" method = "post" id = "Delete_entry">
<input type = "hidden" readonly = "true" name = "EntryID" value = "<?php echo $entry['EntryID']; ?>" />
<?php if ($userid == 1)
{ ?>
<input type = "submit" id = "btnDelete" value = "Delete Post"/>
<?php } ?>
<br /><br />
</form>
</td>
</tr>
</div>
<?php
} endforeach; ?>
<Script>
function cookiechecksub() {
if (!userid) {
if (confirm("Please log in first")) {
window.location.replace("http://localhost/alexdes/login-logout.php");
}
}
else {
TryAddSubPost();
}
}
function TryAddSubPost()
{
var x = document.getElementById("<?php echo $subform?>");
if (x.style.display === "none")
{
x.style.display = "block";
}
else
{
x.style.display = "none";
}
}
</Script>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Дайте cookiechecksub аргумент и передайте его TryAddSubPost
<button onclick = "cookiechecksub('<?=$entry['EntryID']?>')">
это потому, что вы использовали эхо php в функции js, особенно в TryAddSubPost
измените это так:
<script>
function cookiechecksub(id) {
if (!userid) {
if (confirm("Please log in first")) {
window.location.replace("http://localhost/alexdes/login-logout.php");
}
}
else {
TryAddSubPost(id);
}
}
function TryAddSubPost(id)
{
var x = document.getElementById(id);
if (x.style.display === "none")
{
x.style.display = "block";
}
else
{
x.style.display = "none";
}
}
</script>
и использовать идентификатор из php только при вызове функции, например:
<button onclick = "cookiechecksub('<?php echo $entry['EntryID']?>')">Reply</button>
Это сработало, я новичок в JS и до сих пор не могу определить, когда передавать переменные и тому подобное. Огромное спасибо!!
извините, неправильно отредактировал, а потом случайно отправил, хотел отредактировать свой пост