我无法在Javascript中使用我的功能

时间:2016-08-12 19:16:06

标签: javascript jquery

我的函数change_slide()收到错误。 第24:1行ReferenceError: change_slide is not defined。 我的代码在这里:

$(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();
    });
});
单击.next上的

change_slide()工作,在setInterval中不起作用。

2 个答案:

答案 0 :(得分:5)

当您使用setInterval的字符串参数时,Javascript代码将在全局环境中执行。您应该传递函数引用而不是字符串,然后在本地环境中对其进行评估。

setInterval(change_slide, 3000);

请注意,您应该 change_slide之后添加括号。这将立即调用函数,而不是传递对函数的引用。

答案 1 :(得分:0)

document ready function

中取出函数声明

同样更改

setInterval('change_slide()', 3000);

setInterval(change_slide, 3000);

以下是已修改代码

$(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);
}