The problem is when you pass function name in setTimeout
function, the function must be public but in your code, the function chngImg
is declared inside $(document).ready
. It's local function, that's why your code doesnt run. And you cant set default value of arguments.
Your code should be
function chngImg(curImg, imgNum) {
if (!curImg) {
curImg = 1;
}
if (!imgNum) {
imgNum = 4;
}
var src = "immagini/dishes_pizze/dish" + curImg + ".jpg";
$('#picture').fadeOut("slow");
$('#picture').attr('src', src);
$('#picture').fadeIn("slow");
curImg++;
if (curImg > imgNum) {
curImg = 1;
} //end if
setTimeout('chngImg(curImg, imgNum);', 5000);
}
$(document).ready(function() {
chngImg();
});
Or you can pass callback to setTimeout
like that:
$(document).ready(function() {
function chngImg(curImg, imgNum) {
if (!curImg) {
curImg = 1;
}
if (!imgNum) {
imgNum = 4;
}
var src = "immagini/dishes_pizze/dish" + curImg + ".jpg";
$('#picture').fadeOut("slow");
$('#picture').attr('src', src);
$('#picture').fadeIn("slow");
curImg++;
if (curImg > imgNum) {
curImg = 1;
} //end if
setTimeout(function() {
chngImg(curImg, imgNum);
}, 5000);
}
chngImg();
});