简体   繁体   English

我无法在Javascript中使用我的函数

[英]I can't use my function in Javascript

I'm getting error with my function change_slide(). 我的函数change_slide()出现错误。 ReferenceError: change_slide is not defined on line 24:1. ReferenceError: change_slide is not defined在第24:1行上ReferenceError: change_slide is not defined My code is here: 我的代码在这里:

$(document).ready(function() {

    function change_slide() {
        number = pclass.charAt(6);
        number = parseInt(number);

        if (number == 5) number = 1;
        else number++;

        $('.picks').removeClass(pclass);
        pclass = 'bgpick' + number;
        $('.picks').addClass(pclass);
    }

    var random = Math.floor((Math.random() * 5) + 1);
    var pclass = 'bgpick' + random;
    var number;
    $('.picks').addClass(pclass);
    setInterval('change_slide()', 3000);
    $('.next').on('click', function() {
        change_slide();
    });
});

change_slide() on click .next works, in setInterval doesn't work. 单击.next上的change_slide()可以,在setInterval中不起作用。

When you use a character string argument to setInterval , the Javascript code is executed in the global environment. setInterval使用字符串参数时,将在全局环境中执行Javascript代码。 You should pass a function reference instead of a character string, then it will be evaluated in the local environment. 您应该传递函数引用而不是字符串,然后它将在本地环境中进行评估。

setInterval(change_slide, 3000);

Note that you should not put parentheses after change_slide here. 需要注意的是,你应该把括号后change_slide这里。 That will call the function immediately, instead of passing a reference to the function. 这将立即调用该函数,而不是传递对该函数的引用。

Take the function declaration out of document ready function , document ready function删除功能声明,

Also change 改变

setInterval('change_slide()', 3000);

To

setInterval(change_slide, 3000);

Here is modified code 这是修改后的代码

$(document).ready(function() {
  var random = Math.floor((Math.random() * 5) + 1);
  var pclass = 'bgpick' + random;
  var number;
  $('.picks').addClass(pclass);
  setInterval(change_slide, 3000);
  $('.next').on('click', function() {
    change_slide();
  });
});
function change_slide() {
  number = pclass.charAt(6);
  number = parseInt(number);

  if (number == 5) number = 1;
  else number++;

  $('.picks').removeClass(pclass);
  pclass = 'bgpick' + number;
  $('.picks').addClass(pclass);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM