Ошибка создания пользовательской карусели Jquery (только в IE) после определенного количества циклов - PullRequest
0 голосов
/ 11 августа 2009

Получил эти функции, которые являются лишь частью простого слайд-шоу. После примерно 100 повторений он вызывает переполнение стека (IE6) или нехватку памяти (IE 7-8) ...

Не вижу здесь ничего плохого, правда ... Есть идеи?

function show($itemNumber) {
                $("#mainImage").stop();
                $("#mainImage").fadeOut(fadingSpeed, function() {
                    $("#mainImage").unbind('load');
                    $("#mainImage").load(function() {
                        $("#mainImage").fadeIn(fadingSpeed);
                    });
                    $("#mainImage").attr('src',items[$itemNumber].img);
                    $("#mainText").html(items[$itemNumber].text);

                    currentItem = $itemNumber;
                });
                return false;
            }

            function moveOneSlide() {
                if (slideshow === true) {
                    currentItem++;
                    if (currentItem >= items.length) {
                        currentItem = 0;
                    }
                    setTimeout(moveOneSlide, interval);
                    show(currentItem);
                }
            }

Ответы [ 2 ]

0 голосов
/ 12 августа 2009

Вы создаете несколько функций каждый вызов здесь. Попробуйте удалить их из цикла и установить через именованную переменную, чтобы уменьшить использование памяти. Кроме того, вы показываете нам всю свою функцию? Там не происходит рекурсия; кажется, что вы настраиваете его с помощью функции moveOneSlide(), но в вашем коде она не вызывается. Убедитесь, что вы разместили все соответствующие коды.

0 голосов
/ 11 августа 2009

Я проверял это, но до 1115 изображений, я не получил никаких ошибок, это код, который я проверял.

            <script type="text/javascript" src="js/jquery.js"></script>
            <script type="text/javascript">
            var items = [{'img':'smiles/1.gif','text':'hello'},
             {'img':'smiles/2.gif','text':'hi'},
             {'img':'smiles/3.gif','text':'hello'},
             {'img':'smiles/4.gif','text':'hi'},
             {'img':'smiles/5.gif','text':'hello'},
             {'img':'smiles/6.gif','text':'hi'},
             {'img':'smiles/7.gif','text':'hello'},
             {'img':'smiles/8.gif','text':'hi'},
             {'img':'smiles/9.gif','text':'hello'},
             {'img':'smiles/10.gif','text':'hi'},
             {'img':'smiles/11.gif','text':'hello'},
             {'img':'smiles/12.gif','text':'hi'},
             {'img':'smiles/13.gif','text':'hello'},
             {'img':'smiles/14.gif','text':'hi'},
             {'img':'smiles/15.gif','text':'hello'},
             {'img':'smiles/16.gif','text':'hi'},
             {'img':'smiles/17.gif','text':'hello'},
             {'img':'smiles/18.gif','text':'hi'},
             {'img':'smiles/19.gif','text':'hello'},
             {'img':'smiles/20.gif','text':'hi'},
             {'img':'smiles/21.gif','text':'hello'},
             {'img':'smiles/22.gif','text':'hi'},
             {'img':'smiles/23.gif','text':'hello'},
             {'img':'smiles/24.gif','text':'hi'},
             {'img':'smiles/25.gif','text':'hello'},
             {'img':'smiles/26.gif','text':'hi'},
             {'img':'smiles/27.gif','text':'hello'},
             {'img':'smiles/28.gif','text':'hi'},
             {'img':'smiles/29.gif','text':'hello'},
             {'img':'smiles/30.gif','text':'hi'},
             {'img':'smiles/31.gif','text':'hello'},                                
             {'img':'smiles/32.gif','text':'hi'},
             {'img':'smiles/33.gif','text':'hello'},
             {'img':'smiles/34.gif','text':'hi'},
             {'img':'smiles/35.gif','text':'hello'},
             {'img':'smiles/36.gif','text':'hi'},
             {'img':'smiles/37.gif','text':'hello'},
             {'img':'smiles/38.gif','text':'hi'},
             {'img':'smiles/39.gif','text':'hello'},
             {'img':'smiles/41.gif','text':'hi'},
             {'img':'smiles/42.gif','text':'hello'},
             {'img':'smiles/43.gif','text':'hi'},
             {'img':'smiles/44.gif','text':'hello'},
             {'img':'smiles/45.gif','text':'hi'},
             {'img':'smiles/46.gif','text':'hello'},
             {'img':'smiles/47.gif','text':'hi'},
             {'img':'smiles/48.gif','text':'hello'},
             {'img':'smiles/49.gif','text':'hi'},
             {'img':'smiles/50.gif','text':'hello'},
             {'img':'smiles/51.gif','text':'hi'},
             {'img':'smiles/52.gif','text':'hello'},
             {'img':'smiles/53.gif','text':'hi'},
             {'img':'smiles/54.gif','text':'hello'},
             {'img':'smiles/55.gif','text':'hi'},
             {'img':'smiles/56.gif','text':'hello'},
             {'img':'smiles/57.gif','text':'hi'},
             {'img':'smiles/58.gif','text':'hello'},
             {'img':'smiles/59.gif','text':'hi'},
             {'img':'smiles/60.gif','text':'hello'},
             {'img':'smiles/61.gif','text':'hi'},
             {'img':'smiles/62.gif','text':'hello'},
             {'img':'smiles/63.gif','text':'hi'},
             {'img':'smiles/64.gif','text':'hello'},
             {'img':'smiles/65.gif','text':'hi'},
             {'img':'smiles/66.gif','text':'hello'},
             {'img':'smiles/67.gif','text':'hi'},
             {'img':'smiles/68.gif','text':'hello'},
             {'img':'smiles/79.gif','text':'hi'},
             {'img':'smiles/70.gif','text':'hello'},
             {'img':'smiles/71.gif','text':'hi'},
             {'img':'smiles/72.gif','text':'hello'},
             {'img':'smiles/73.gif','text':'hi'},
             {'img':'smiles/74.gif','text':'hello'},
             {'img':'smiles/75.gif','text':'hi'},
             {'img':'smiles/76.gif','text':'hello'},
             {'img':'smiles/77.gif','text':'hi'}];

следующий

                fadingSpeed=10;
                interval=1000;
                currentItem=0;
                count='0'
            function show($itemNumber) {
                count++;
                //$("#mainImage").stop();
                $("#mainImage").fadeOut(fadingSpeed, function() {
                    $("#mainImage").unbind('load');
                    $("#mainImage").load(function() {
                        $("#mainImage").fadeIn(fadingSpeed);
                    });
                    $("#mainImage").attr('src',items[$itemNumber].img);
                    $("#mainText").html(items[$itemNumber].text);
                    $("#mainNum").html(count)
                    currentItem = $itemNumber;
                });
                return false;
            }

            function moveOneSlide() {
                    currentItem++;
                    if (currentItem >= items.length) {
                        currentItem = 0;
                    }
                    setTimeout(moveOneSlide, interval);
                    show(currentItem);
                    }

            $(document).ready(function(){
                moveOneSlide();
            });
            </script>

HTML

<body>
<div id="container">
<img src="" id='mainImage'>
<div id='mainText'></div> 
<div id='mainNum'></div> 
</div>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...