如何解决有多个前后比较滑块
你好,我试图循环一个“之前/之后”图像滑块,但是我遇到了问题,使用单个Slider可以正常工作,但是一旦我将它放入一个foreach循环中,我就只能工作一个,假设这是一个javascript“问题“?
HTML
@foreach ($studyCases as $studyCase)
<div id="comparison">
<figure style="background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/photoshop-face-before.jpg); ">
<div id="divisor" style="background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/photoshop-face-after.jpg);"></div>
</figure>
<input type="range" min="0" max="100" value="50" id="slider" oninput="moveDivisor()">
</div>
@endforeach
JavaScript
var divisor = document.getElementById("divisor"),slider = document.getElementById("slider");
function moveDivisor() {
divisor.style.width = slider.value+"%";
}
解决方法
我认为问题在于,当您尝试执行moveDivisor
函数时,您仅引用了一个元素。当通过id从文档获取id时,Javascript仅找到一个元素,因为id属性在整个HTML中应该是唯一的。您可以尝试构建HTML结构,例如将循环索引添加到您的ID:
id="divisor-{{ $loop->index }}"
然后,您可以通过传递元素ID来在onclick
中起作用,以相同的方式让javascript
知道您要尝试到达哪个滑块:
oninput="moveDivisor('divisor-{{ $loop->index }}')"
最后一步是修改您的javascript
,使其找到合适的元素:
function moveDivisor(elementId) {
var divisor = document.getElementById(elementId);
divisor.style.width = slider.value+"%";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。