我有这个滑块,它在IE和Chrome中工作正常,但在firefox中有问题,它加载所有图片一次但它不会再返回并加载它们,在控制台中我得到此错误 " SyntaxError:missing]在元素lis"之后在setTimeout(func,900)
的行中这是代码
function pic_loader() {
//alert('s');
var func = new function () {}
$folder = $('#foldername').attr('value');
$files = document.getElementById('filename').value;
$num = document.getElementById('num').value;
$filenames = $files.split("##");
var $img = [];
var $link = [];
if ($num > 1) {
for ($i = 1; $i <= $num; $i++) {
$img[$i] = $folder + "/" + $filenames[$i];
if ($i == 1) {
$link[$i] = "<img id='slide[" + $i + "]' width=380 src=" + $img[$i] + ">";
$("#load_here").append($link[$i]);
$first = document.getElementById('slide[1]');
$first.style.display = "none";
$($first).fadeIn(800);
} else {
$link[$i] = "<img id='slide[" + $i + "]' width=380 src=" + $img[$i] + " style='display:none'>";
$("#load_here").append($link[$i]);
}
}
$i = 1;
var $loop = setInterval(function () {
//alert('x');
$j = $i + 1;
$current = document.getElementById('slide[' + ($i++) + ']');
$next = document.getElementById('slide[' + ($j) + ']');
$($current).fadeOut(800, function () {
$($next).fadeIn(800);
});
if ($j > $num) {
$($next).fadeOut(800);
setTimeout(func, 900);
function func() {
clearInterval($loop);
$("#load_here").html("");
pic_loader();
}
}
}, 4500);
} else {
$i = 1;
$img[$i] = $folder + "/" + $filenames[$i];
$link[$i] = "<img id='slide[" + $i + "]' width=380 src=" + $img[$i] + ">";
$("#load_here").append($link[$i]);
}
}
答案 0 :(得分:0)
您粘贴的代码中没有语法错误。它必须在其他地方。将其粘贴到jsfiddle中,它不会引发语法错误。
答案 1 :(得分:0)
首先,id
属性不能包含[
或]
字符。
您可以使用name atrribute
替换id
或创建id
,例如slide_1,slide_2,....
使用name
属性,您可以使用以下功能:
$current = document.getElementsByName('slide[' + ($i++) + ']');
这篇文章可以帮助您更多地了解您的问题Accessing an array of HTML input text boxes using jQuery or plain Javascript