用js滑块的firefox问题

时间:2013-02-08 04:42:53

标签: javascript jquery

我有这个滑块,它在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]);
    }
}

2 个答案:

答案 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