javascript - 单击时显示特定的 php 数据
问题描述
我已经使用 PHP 显示了数据库中的所有项目,但我想制作一个弹出窗口,显示单击的数据,它可以通过单击item-container
或order
按钮触发,无需刷新或转到另一个链接。我对每个项目都有一个唯一的 ID,但我真的不明白如何在单击时获取数据然后将其显示在弹出窗口中。
<?php foreach($menu as $row) : ?>
<div class="item">
<img src="mcd/<?= $row["image"]; ?>" alt="" class="item-image">
<div class="item-detail">
<div class="item-name"><?= $row["item"]; ?></div>
<div class="item-price"><?= $row["price"]; ?></div>
<div class="item-order">
<!-- <button class="order"> -->
Order >>
<!-- </button> -->
</div>
</div>
</div>
<?php endforeach; ?>
<!-- The popup -->
<div class="popup-container hide">
<div class="popup-wrapper">
<div class="popup-image">
<img src="this-image.jpg" alt="">
</div>
<div class="popup-name">
This Name
</div>
<div class="popup-price">
This Int
</div>
<div class="order-container">
<div class="value-container">
<button class="minusBtn"><img src="icon/minus.png" alt="" width="30px"></button>
<div class="value">1</div>
<button class="plusBtn"><img src="icon/plus.png" alt="" width="30px"></button>
</div>
<button class="orderBtn">Add To Cart</button>
</div>
</div>
</div>
编辑:在此处添加了一些 js 代码。它基本上只是一个简单的弹出事件。
function order() {
let items = document.querySelectorAll('.item');
let popup = document.querySelector('.popup-container');
let orderBtn = document.querySelector('.orderBtn');
let cartIcon = document.querySelector('.cart-icon');
items.forEach((item) => {
item.addEventListener('click', ()=>{
popup.style.display = 'block';
window.addEventListener('click', (e)=>{
if (orderBtn.contains(e.target)) {
popup.style.display = 'none';
cartIcon.src = 'icon/cart-bill.png';
}
if (e.target.classList.contains('popup-container')) {
document.querySelector('.popup-container').style.display = 'none';
}
})
})
});
} order();
解决方案
当您有多个要显示的项目时,您可以为每个项目生成一个“唯一”弹出 div 并使用 javascript 函数来显示和隐藏弹出 div 。
在您的情况下,您可以将.popup-container hide
div 放在 foreach 循环中并给它一个唯一的 id,例如$row["item"]
假设每个项目都是唯一的。确保hide
弹出 div 上的类实际上隐藏了 div,例如:
隐藏{显示:无;}
然后在按钮上放置一个onclick事件,该事件将显示和隐藏弹出 div 并将弹出唯一 id 传递给函数,因此在您的情况下:
<button class="order" onClick="popupFunction('<%= $row["item"] %>')">
现在只需编写一个 javascript 函数来处理 onclick 事件以显示和隐藏弹出 div,在此示例中,我将弹出 div 唯一 ID 分配给itemId
,然后我使用它来获取弹出 div 并将其分配给popupContainer
. 然后我只是通过检查它是否包含hide
类来检查 div 是否隐藏 - 如果它包含我删除类以显示弹出 div 如果它不然后我添加类以隐藏弹出 div 。
function popupFunction(itemId) {
var popupContainer = document.getElementById(itemId);
if (popupContainer.classList.contains('hide')) {
popupContainer.classList.remove('hide');
} else {
popupContainer.classList.add('hide');
}
}
推荐阅读
- vue.js - 最新 Parcel + Vue 示例
- css - 从 html 中的交互式表格更新绘图
- html - 在 Firefox 上隐藏消息“找不到支持格式和 MIME 类型的视频”
- c# - 如何在 C# 中反序列化奇怪的 JSON 格式
- macos - 无法在mac上复制和安装android studio
- scala - 在 Apache Spark 中使用 RESTful API 并转换为 Dataframe
- rxjs - 如何测试使用 rxjs 弹珠发出分组事件的可观察对象?
- c# - 以编程方式减少 TIME_WAIT 或 CLOSE_WAIT
- javascript - 如何排除 gulp src 中的路径?
- javascript - 访问未知的 Firebase 路径