Как заставить несколько модалов отображаться в цикле while?

php / html:

<?php include 'connect.php';
$sql = "SELECT * FROM products WHERE featured = 1";
$featured = mysqli_query($conn,$sql);
?>

<?php while ($product = mysqli_fetch_assoc($featured)): ?>
<div class = "products">
<a  class = "myBtn"><img src = "<?= $product['image'];?>" height = "300" 
width = "275"></a>
<a href = "#" class = "myBtn"> <p><?=$product['title'];?></p></a><br>
<p>Usual Price: £<s><?= $product['list_price'];?></s></p>
<p>Sale Price: £<?= $product['price'];?></p>

</div>

<!-- Trigger/Open The Modal -->
<button id = "myBtn">Open Modal</button>

<!-- The Modal -->
<div id = "myModal" class = "modal">

<!-- Modal content -->
<div class = "modal-content">
<span class = "close">&times;</span>
<p>Some text in the Modal..</p>
</div>

</div>
<?php endwhile ?>

css:

/* The Modal (background) */
.modal {
  display: none; /* Hidden by default */
  position: fixed; /* Stay in place */
  z-index: 1; /* Sit on top */
  left: 0;
  top: 0;
  width: 100%; /* Full width */
  height: 100%; /* Full height */
  overflow: auto; /* Enable scroll if needed */
  background-color: rgb(0,0,0); /* Fallback color */
  background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
 }

 /* Modal Content/Box */
 .modal-content {
   background-color: #fefefe;
   margin: 15% auto; /* 15% from the top and centered */
   padding: 20px;
   border: 1px solid #888;
   width: 80%; /* Could be more or less, depending on screen size */
 }
 /* The Close Button */
.close {
  color: #aaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
   }

 .close:hover,
 .close:focus {
  color: black;
  text-decoration: none;
  cursor: pointer;
    }

javascript:

// Get the modal
var modal = document.getElementById('myModal');

// Get the button that opens the modal
var btn = document.getElementById("myBtn");

// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];

// When the user clicks on the button, open the modal 
btn.onclick = function() {
modal.style.display = "block";
}

// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {

вопросы: 1. модальный фон вообще не отображается

2.Модальное содержимое по умолчанию отображается блоком при открытии страницы.

3. на кнопке нет стиля

4. модальные окна не открываются при нажатии (кроме первого)

Модальное окно просто скопировано из W3schools, поэтому я ожидаю, что код правильный. Что я здесь делаю не так?

Благодарю.

Мой совет - держитесь подальше от w3schools.

Chris G 13.07.2018 00:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
40
1

Ответы 1

Несколько предложений:

  • Вы должны использовать модель начальной загрузки. так что нет необходимости в ручном javascript.
  • Во-вторых, для нескольких моделей в цикле. ваш идентификатор и ссылка должны быть разными для каждой итерации цикла. Как и в 1-й итерации id и ref могут быть name-1, затем name-2 и т. д.

Так он будет нормально работать.

Другие вопросы по теме