如何调用另一个函数内的函数?

时间:2016-08-19 23:23:21

标签: javascript jquery html css

我试图在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>

2 个答案:

答案 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 }