我想做的是有一个图像滑块与按钮的图像,将显示相应的信息,在一个模式的图像的底部。
<div class=swipeManual>
<c:forEach var = "tempCustomer" items = "${customers}">
<img id="imgS" src="${pageContext.request.contextPath}/resources/images/${tempCustomer.image}" style="z-index:-2" >
<button class="buttonImg myBtn" type="button" style="z-index:-1">Click Me!</button>
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close">×</span>
<p>${tempCustomer.description}</p>
</div>
</div>
</c:forEach>
字符串
这里是JavaScript
<script>
var buttons = document.querySelectorAll('.buttonImg');
function clickHandler(em) {
var modal = document.getElementById(em);
modal.style.display = "Block";
}
for (var i = 0; i < buttons.length; i++) {
(function () {
var but = buttons[i].parentNode.id;
buttons[i].addEventListener("click", function() { clickHandler(but)}, false);
}()); // immediate invocation
}
</script>
型
问题是只有第一个按钮在旋转木马上工作,也就是打开带有图像描述的模态,其余的都不起作用。我想我的循环按钮不正确,因为只有第一个按钮工作。
图片1
图片2
2条答案
按热度按时间luaexgnf1#
问题是只有第一个按钮在旋转木马上起作用,也就是打开带有图像描述的模式,其余的都不起作用
究其原因,就是因为这条线
字符串
document.getElementsByClassName("buttonImg myBtn")[0]
只会给予第一个元素,所以没有办法将事件附加到其他按钮上。使用
document.querySelectorAll('.buttonImg')
。这将给予一个集合(类似于arraylist)。循环该arrayList并将cick事件附加到所有事件
sf6xfgos2#
也许这是一个对你有帮助的起点?
我试着模仿你的图片行,因为stackoverflow上没有Spring MVC。请原谅我没有正确地格式化东西。这只是一个原则性的草图。我从元素中删除了
id
s,因为它们在循环中不再是唯一的。实际的jquery部分非常简单:我将click事件绑定到class=“myBtn”的所有按钮,并在事件函数中处理该操作:
1.使所有模态不可见
1.使当前模式再次可见(
.show()
)