js滑块的firefox问题

firefox issue with js slider

本文关键字:firefox 问题 js      更新时间:2023-09-26

我有这个滑块,它在IE和chrome中运行良好,但在firefox中有问题,它一次加载了所有图片,但没有再次返回并加载它们,在控制台中我得到了这个错误setTimeout(func,900)行中的元素lis后的"SyntaxError:missing]"

这是代码

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

粘贴的代码中没有语法错误。它一定在别处。将其粘贴到jsfiddle中,不会引发语法错误。

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

您可以使用name atrribute代替id,也可以像创建slide_1,slide_2,.... 一样创建id

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

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