0

我有这个滑块,它在 IE 和 chrome 中运行良好,但在 Firefox 中出现问题,它会一次性加载所有图片,但不会再次返回并加载它们,在控制台中我收到此错误“SyntaxError:missing ] after setTimeout(func,900) 行中的元素 lis"

这是代码

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]);
    }
}
4

2 回答 2

0

您粘贴的代码中没有语法错误。它必须在其他地方。将其粘贴到 jsfiddle 中,它不会引发语法错误。

于 2013-02-08T05:05:40.010 回答
0

首先,id属性不能包含[]字符。

您可以name atrribute就地使用 odid或创建id类似slide_1,slide_2,....

使用name属性,您可以使用如下功能: $current = document.getElementsByName('slide[' + ($i++) + ']');

这篇文章可以帮助您更多地了解您的问题使用 jQuery 或纯 Javascript 访问 HTML 输入文本框数组

于 2013-02-08T05:10:01.783 回答