0

10 张图片后,计数器不会重置为 1。为什么?它计数到无穷无尽。我不明白为什么它不起作用。计数器达到 11 后,他必须设置为 1。请帮助我。我找不到解决方案。

    <head>

            <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>

            <script>

            $(document).ready(function(){

                    var timer,

                            counter = 1,

                            changepic = function(pic){

                                    var src = pic.attr("src");

                                    counter = counter+1;

                                    if (counter == 11){ ## here is the prblem
                                    counter = 1;
                                    }

                                    pic.attr("src", src.substring(0,src.lastIndexOf('.')-1)+counter+".jpg")

                            };

                    $('img').hover(function(){

                            var $this = $(this);

                            timer = setInterval(function(){changepic($this);}, 1000);

                    }, function(){clearInterval(timer);});

            });

            </script>

    </head>

    <body>

            <table style="float&#58;left;">

            <tr><tr><td><img src="testbilder/test.1.jpg"><br>Text</td></tr> </tr>

            </table>

    </body>

我该如何解决?

4

1 回答 1

1

首先,您需要确认问题出在计数器上。添加日志语句,在谷歌浏览器的开发者工具中查看日志。

if (counter == 11){ ## here is the prblem
    counter = 1;
}
console.log('counter : '+counter);

查看您的代码后...我认为问题出在此声明中..

pic.attr("src", src.substring(0,src.lastIndexOf('.')-1)+counter+".jpg")

因为对于 counter=10... src 的值是,

src = 'testbilder/test.10.jpg'

现在通过 src.substring(0,src.lastIndexOf('.')-1)+counter+".jpg") 将适用于高达 9 的计数器,但对于计数器 = 10 ......这将是

changepic = function(pic){
    var src = pic.attr("src");  // here src = 'testbinder/test.10.jpg'
    counter = counter+1;  // here counter = 11
    if (counter == 11){ 
        counter = 1; // here counter = 1
    }
        // now src.substring(0,src.lastIndexOf('.')-1) = 'testbinder/test.1'
        // src.substring(0,src.lastIndexOf('.')-1)+counter+".jpg"='testbinder/test.11.jpg'
        pic.attr("src", src.substring(0,src.lastIndexOf('.')-1)+counter+".jpg");

    };
}

要解决此问题,请将其更改为..

pic.attr("src", src.substring(0,src.indexOf('.')+1)+counter+".jpg");
于 2012-12-10T13:10:55.603 回答