代码片段一:<ul id="specsChooseMainDisplay" class="list-unstyled specsChooseDisplay"><button data-value-id="1" data-value-price="4" data-value-goodnum="4" class="specifications specifications-0">一盒装4个月饼[月饼礼盒1]</button><button data-value-id="5" data-value-price="4" data-value-goodnum="4" class="specifications specifications-0">一盒装4个月饼[月饼礼盒1]</button></ul> 代码片段二:<td id="specsChooseModalDisplay"><button data-value-id="1" data-value-price="4" data-value-goodnum="4" class="specifications specifications-0">一盒装4个月饼[月饼礼盒1]</button><button data-value-id="3" data-value-price="4" data-value-goodnum="4" class="specifications specifications-0">一盒装4个月饼[月饼礼盒1]</button></td> 代码片段三:$(document).ready(function() { // 获取父元素 let container = document.getElementById('specsChooseMainDisplay'); // 添加事件监听器 container.addEventListener('click', function(event) { // 获取点击的目标元素 let target = event.target; // 判断目标元素是否为按钮 if (target.tagName === 'BUTTON') { // 获取所有按钮 let buttons = container.getElementsByTagName('BUTTON'); // 移除其他按钮的 specsChooseHover 类 for (let i = 0; i < buttons.length; i++) { if (buttons[i] !== target) { buttons[i].classList.remove('specsChooseHover'); buttons[i].removeAttribute('id'); } } // 切换目标按钮的 specsChooseHover 类 target.classList.toggle('specsChooseHover'); target.setAttribute('id', 'specsChooseHover'); specificationSelection(); } }); }); 请问,在代码片段三的基础上,该如何修改,才能使当点击代码片段一的某个button时,与其data-value-id的值一致的代码片段二的button也添加class的值specsChooseHover,并且当代码片段一的button的class的specsChooseHover和id的specsChooseHover被移除时,代码片段二的button也发生同样的改变
时间: 2024-04-22 10:26:46 浏览: 66
要实现当点击代码片段一的某个button时,与其data-value-id的值一致的代码片段二的button也添加class的值specsChooseHover,并且当代码片段一的button的class的specsChooseHover和id的specsChooseHover被移除时,代码片段二的button也发生同样的改变,可以进行以下修改:
```javascript
$(document).ready(function() {
// 获取父元素
let container = document.getElementById('specsChooseMainDisplay');
// 获取代码片段二的父元素
let modalContainer = document.getElementById('specsChooseModalDisplay');
// 添加事件监听器
container.addEventListener('click', function(event) {
// 获取点击的目标元素
let target = event.target;
// 判断目标元素是否为按钮
if (target.tagName === 'BUTTON') {
// 获取目标按钮的data-value-id值
let targetId = target.getAttribute('data-value-id');
// 获取代码片段一中所有按钮
let buttons = container.getElementsByTagName('BUTTON');
// 移除其他按钮的 specsChooseHover 类和 id
for (let i = 0; i < buttons.length; i++) {
if (buttons[i] !== target) {
buttons[i].classList.remove('specsChooseHover');
buttons[i].removeAttribute('id');
}
}
// 获取代码片段二中所有按钮
let modalButtons = modalContainer.getElementsByTagName('BUTTON');
// 遍历代码片段二中的按钮
for (let i = 0; i < modalButtons.length; i++) {
// 判断按钮的data-value-id值与目标按钮的data-value-id值是否一致
if (modalButtons[i].getAttribute('data-value-id') === targetId) {
// 添加或移除class的值specsChooseHover
modalButtons[i].classList.toggle('specsChooseHover');
}
}
// 切换目标按钮的 specsChooseHover 类和 id
target.classList.toggle('specsChooseHover');
target.setAttribute('id', 'specsChooseHover');
specificationSelection();
}
});
});
```
在上述修改中,我们添加了对代码片段二的父元素modalContainer的获取,并在点击事件监听器中添加了对代码片段二按钮的操作。在代码片段一按钮的移除specsChooseHover类和id之后,我们遍历代码片段二中的按钮,并判断其data-value-id值是否与目标按钮的data-value-id值一致,然后进行相应的class操作。这样就实现了当点击代码片段一的某个button时,与其data-value-id的值一致的代码片段二的button也添加class的值specsChooseHover,并且当代码片段一的button的class的specsChooseHover和id的specsChooseHover被移除时,代码片段二的button也发生同样的改变。
阅读全文