javascript - 链接两个元素,存储它们,并将它们发送到删除函数 - 纯 Javascript
问题描述
我有一个演示购物车功能的纯 Javascript 原型。
我有一个 Button 将项目添加到购物车(并切换到 ON 状态),然后有一个 Card 代表购物车中的项目。
到目前为止,我已经工作了;
将数据附加到“添加到购物车”按钮 ✓</p>
将数据从 Button 发送到购物车并创建新的 Item Card ✓</p>
但是,我无法弄清楚如何链接 Button 和新创建的项目卡,因此我可以:
- 移除项目卡并切换按钮关闭或
- 关闭按钮并移除正确的物品卡
https://codepen.io/rhysyg03/pen/PdyyWE
您的帮助将不胜感激。
仅供参考 - 这只是一个演示,所以它不需要是生产就绪代码。
谢谢你。
const shoppingCartEl = document.querySelector('#js-shopping-cart');
const addToCartButton = document.querySelector('#js-add-to-cart');
var buttonToggle = false;
var itemOneData = {
name:'Shoes',
price:"$105.00"
}
function addItem(button, itemData) {
console.log("ADD");
// var itemEl = createElement('<div class="item-card"></div>');
const itemEl = document.createElement("div");
itemEl.classList.add("item-card");
itemEl.innerHTML = itemData.name + itemData.price + "<button id='js-item-cart-remove'>Remove</button>";
shoppingCartEl.appendChild(itemEl);
const itemCardRemove = document.querySelector('#js-item-cart-remove');
itemCardRemove.addEventListener('click', () => {
removeItem();
})
}
function removeItem() {
console.log("REMOVE");
// how to do this part
}
addToCartButton.addEventListener('click', () => {
if (buttonToggle == false) {
addItem(addToCartButton, itemOneData);
buttonToggle = true;
addToCartButton.innerHTML = "Remove from Cart";
} else {
// How to do this part
removeItem();
buttonToggle = false;
addToCartButton.innerHTML = "Add to Cart";
}
})
解决方案
(对不起,我有点累了,你应该先看最后的结尾)
你应该有这样的项目:
var itemOneData = {
id: 1,
name:'Shoes',
price:"$105.00"
}
var itemTwoData = {
id: 2,
name:'Shoes',
price:"$105.00"
}
然后你应该在项目卡元素上存储标识符:
...
itemEl.classList.add("item-card");
itemEl.setAttribute("data-item-id", itemData.id)
...
在此之后,当单击删除按钮时,您应该:
- 获取
id
要删除的项目itemEl.getAttribute("data-item-id")
- 传递
id
删除功能removeItem(id)
- (这是我放弃的地方)找到属性为“data-item-id”的项目,
id
并将其替换为空字符串“”
还有另一种解决方案,可能要简单得多:单击删除按钮时,只需找到它的父项并将其替换为空字符串。
推荐阅读
- flutter - 用于颤振的 SDK android 模拟器
- c# - 与 SSMS 相比,实体框架中的查询时间极慢
- javascript - 帧运动动画开始时运行函数
- javascript - 如何在动态键内的firebase实时数据库中直接更新值
- typescript - 类型脚本中的 => this[var] 是什么
- python - Python 脚本在 IDE 中运行,但不在终端 (Kafka) 中
- aframe - WebVR中用户进入VR时如何添加2D叠加退出按钮?
- android - failed to make and chown /acct/uid_10059: Read-only file system & other errors on Android app
- security - iframe 父级是否有权访问基于 cookie 的子级身份验证令牌?
- powershell - 多个输入到新提示和 Powershell -run as 和 -nonewwindow 问题