我试图在jQuery&&amp ;;中创建一个简单的图像滑块JavaScript的。我开始分支,更多的是个人的事情来弄清楚自己并遇到了这个问题。我想在更改test
的值后调用函数var count
。希望这会发出(在这种情况下)下一张图像。
var sc;
var count;
setInterval(function test(){
$(".slider #"+count).show("slide",{direction:'right'},500);
$(".slider #"+count).delay(5500).hide("slide",{direction:'left'},500);
if(count==sc || count > sc || count <= 0) {
count=1;
}else{
count=count + 1;
}
}, 6500);
function slider(){
sc=$(".slider img").length;
count= 2;
$(".slider #1").show("fade", 500);
$(".slider #1").delay(5500).hide("slide",{direction:'left'},500);
}
function prev() {
count = count - 1;
test();
}
function next() {
count = count + 1;
test();
}
HTML:
<div class="wrapper">
<div class="slider">
<img id="1" src="images/Background.JPG"/>
<img id="2" src="images/Background2.jpeg"/>
<img id="3" src="images/background2.png"/>
<img id="4" src="images/profilePicture.jpg"/>
</div>
<a href="#" class="left" onclick="prev(); return false;">Previous</a>
<a href="#" class="right" onclick="next(); return false;">Next</a>
</div>
答案 0 :(得分:1)
为了从定义它的函数外部(定义它的作用域)访问它,你必须有一个对它的引用,它存在于你想要的代码可见的作用域中访问它。
最常见的方法是定义要从范围内多个位置调用的函数,该范围对于您希望调用它的所有位置都是可见的。例如:
var count;
function test(){
//Do stuff
}
function slider(){
//code
setInterval(test, 6500);
}
function prev() {
count = count - 1;
test();
}
function next() {
count = count + 1;
test();
}
另一种方法,但有点不寻常,完成相同的事情将是:
var intervalFunction;
function slider(){
//code
setInterval(intervalFunction = function test(){
//Do stuff
}, 6500);
}
function prev() {
count = count - 1;
intervalFunction();
}
function next() {
count = count + 1;
intervalFunction();
}
答案 1 :(得分:0)
我想你问的是closures in JavaScript?这是你对函数中函数的意思吗?
function slider(){
sc=$(".slider img").length;
count= 2;
$(".slider #1").show("fade", 500);
$(".slider #1").delay(5500).hide("slide",{direction:'left'},500);
return function(){return var += count }