我的函数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中不起作用。
答案 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);
}