我试图用jquery浏览图片库,所以我有一个按钮,它应该将变量递增1然后用它来加载下一张图片。
使用this问题的最佳答案,我认为这将是解决方案:
<div id="pic"></div>
<div id="browse-right">NEXT</div>
<%= image_tag("/1.JPG", id:"1") %>
<%= image_tag("/2.JPG", id:"2") %>
<%= image_tag("/3.JPG", id:"3") %>
$("#1").click(function() {
var x = 1;
$("#pic").html('<img src="/' + x + '.JPG" />');
});
$("#2").click(function() {
var x = 2;
$("#pic").html('<img src="/' + x + '.JPG" />');
});
$("#3").click(function() {
var x = 3;
$("#pic").html('<img src="/' + x + '.JPG" />');
});
//...
$("#browse-right").click(function() {
x = x + 1;
$("#pic").html('<img src="/' + x + '.JPG" />');
});
但它只是重新加载相同的图片,这意味着var x
不会改变。有人知道正确的语法吗?
更新:好的,我想我已经找到了问题所在。单击图片时会设置x
,显然在功能完成后它不会持续存在。我没有在原始代码中包含该部分,因为我认为它会使整个事情变得更加复杂......所吸取的教训。如何在设置函数后让x
保持不变?
答案 0 :(得分:2)
如何在设置函数后让x继续存在?
尝试在x
处理程序
click
var x = 1;
$("body").on("click", function() {
x = x + 1;
$(this).html(x)
})
body {
width: 300px;
height: 300px;
border: 1px solid purple;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
click
答案 1 :(得分:0)
答案 2 :(得分:0)
如果我不得不猜测,请查看之前的 您已更新。事实证明我是对的。您的x
超出了范围。正确的代码,我敢打赌您的问题是范围。 Scope Tutorial
我愿意在代码的其他地方下注,使用像for(x in ; ...
那样重新分配x
的内容。如果情况并非如此,我仍然会赌注任一范围,或者图像src
不正确。您应该使用开发人员控制台检查是否正在提取错误的图像源。您在/
开始时使用img src
将返回base path
。如果图像位于图像文件夹中,则需要包含正确的目录路径。
您可以通过将增量变量附加到元素对象来轻松缩短范围:
$("#browse-right").click(function(e) {
// the following is a simple inline `if` statement
// what it says is (this is your element)
// if this.i does not exist, create it equal to one,
// else count it up once
!this['i'] ? this.i=1: this.i++;
$("#pic").html('<img src="/' + this.i + '.JPG" />');
// the following simply shows what `i` currently is
$('h3').text(this.i);
});
p { cursor: pointer; background: #aabb00; padding: 1em .5em; text-align: center; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<p id="browse-right">Browse Right</p>
<h3></h3>
<div id="pic">
IMG HERE
</div>