2012-08-28 66 views
1

我有一個網站,使用JavaScript隨機顯示引號列表。我已經在7-8個其他網站上使用了這個相同的腳本,沒有問題,但是在這個當前網站上,它幾秒鐘後就會崩潰瀏覽器。Quote左輪手機崩潰網站

我確實有一個類似的問題,這是由於在沒有引號的頁面上調用javascript,但我通過將javascript移動到與引號相同的'includes'文件來解決此問題被稱爲沒有其他)

該網站是在與另一個相同的服務器空間和文件是完全一樣的,所以我不能找出爲什麼這個網站有問題,其他不是。 ..

這裏是腳本...

<ul id="quote"> 
<?php perch_content('Testimonials'); ?> 
</ul> 

<script type="text/javascript"> 

this.randomtip = function() { 
    var pause = 5000; // define the pause for each tip (in milliseconds) Feel free to make the pause longer so users can have time to read the tips :) 
    var length = $("#quote li").length; 
    var temp = -1; 
    this.getRan = function() { 
     // get the random number 
     var ran = Math.floor(Math.random() * length) + 1; 
     return ran; 
    }; 
    this.show = function() { 
     var ran = getRan(); 
     // to avoid repeating tips we need to check 
     while (ran == temp) { 
      ran = getRan(); 
     }; 
     temp = ran; 
     $("#quote li").hide(); 
     $("#quote li:nth-child(" + ran + ")").fadeIn(500); 
    }; 
    // initiate the script and also set an interval 
    show(); 
    setInterval(show, pause); 
}; 
$(document).ready(function() { 
    randomtip(); 
}); 
</script> 

在此先感謝你們!

回答

1

你只有一個報價,這意味着getRan()總是會返回相同的值(1)。由於temp設置爲以前的值,你在這裏得到一個死循環:

var ran = getRan(); 
while (ran == temp) { 
    ran = getRan(); 
} 

如果你在一個包裝它的安全檢查這樣的,它應該工作。

var ran = getRan(); 
if (length > 1) { 
    while (ran == temp) { 
     ran = getRan(); 
    } 
} 
+0

完美!謝謝! –

2

我注意到的第一件事是你的腳本根本沒有被封裝。在你的代碼中,「this」表示窗口對象。 show和getRan函數都是window(全局)對象的成員。

你可以試試這個版本完全封裝的變量:

$(document).ready(function() { 
    var pause = 5000; // define the pause for each tip (in milliseconds) 
    var length = $("#quote li").length; 
    var temp = -1; 
    var getRan = function() { 
     // get the random number 
     var ran = Math.floor(Math.random() * length) + 1; 
     return ran; 
    }; 
    var show = function() { 
     var ran = getRan(); 
     // to avoid repeating tips we need to check 
     while (ran == temp) { 
      ran = getRan(); 
     }; 
     temp = ran; 
     $("#quote li").hide(); 
     $("#quote li:nth-child(" + ran + ")").fadeIn(500); 
    }; 
    // initiate the script and also set an interval 
    show(); 
    setInterval(show, pause); 
}); 
+0

那肯定是洗乾淨了一下,但幾秒鐘後,頁面仍然凍結,(後5000毫秒即時猜測) 見這裏的例子:http://perch.roscoedm.co.uk/aboutus .php 工作示例:http://perch2.monaghans.co.uk/aboutus.php –

+1

您需要多個報價(li)才能使用。 –