在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 一段簡單的JavaScript邏輯,為何在IE中能運(yùn)行成功,在Chrome中卻失

一段簡單的JavaScript邏輯,為何在IE中能運(yùn)行成功,在Chrome中卻失敗了?

我的需求是:讓網(wǎng)頁的背景隨機(jī)漸變
我的解決辦法是,初始時(shí)隨機(jī)獲取一個(gè)rgb值,然后通過一個(gè)方法,每次調(diào)用時(shí)使rgb中的一個(gè)值+1或-1。這就需要防止rgb值超出255的上限,但是現(xiàn)在的問題是當(dāng)rgb值達(dá)到255后,數(shù)值還在上漲,并沒有被限制住,但我覺得我的邏輯并沒有問題。以r值的獲取為例:


    var r = parseInt(Math.random() * 160 + 80, 10);    //r的值
    var rCount = 0;                                    //r的變化計(jì)數(shù)
    var rIncrease = Math.random() > 0.5;               //r值變化的方向(增大或減?。?    var top = 255;        //r的上限
    var buttom = 40;      //r的下限
    var chooseColor;      //隨機(jī)數(shù)。決定改變r(jià)gb中的哪個(gè)值
    var countToChange = 60;        //多少次后改變增加或減少的方向
    function getColor() {
        chooseColor = Math.random();
        //隨機(jī)數(shù)大于0.6666,那么改變r(jià)的值;大于0.3333,那么改變g的值;否則改變b的值
        if (chooseColor > 0.6666) {    //r值的獲取
            if (rCount++ > countToChange) {
                rIncrease = Math.random() > 0.5;
                rCount = 0;
            }
            if (r <= buttom) {
                rIncrease = true;
                rCount = 0;
            } else if (r >= top) {//這個(gè)地方,如果數(shù)值超出255后,應(yīng)該執(zhí)行下面else部分的
                rIncrease = false;
                rCount = 0;
            }
            if (rIncrease) {
                r = r + 1;
            } else {
                r = r - 1;
            }
        } else if (chooseColor > 0.3333) {
        //g值的獲取
        }else{
        //b值的獲取
        }

以上邏輯,在IE中運(yùn)行是沒有發(fā)現(xiàn)問題的,但是在chrome和Firefox中就不行了,不知道為何?
測試頁面見:
代碼的測試頁面

這是一個(gè)純黑色的背景,右鍵點(diǎn)擊“隨機(jī)漸變”后即可看到頁面的顏色隨時(shí)間變化。1512280469786.png
左上角的數(shù)值就是頁面的rgb值,大約過幾十秒之后就有數(shù)值超出255的范圍了。
1512280481832.jpg

注:有人說我寫的太亂了,我就添加了一些注釋。其實(shí)并不亂,因?yàn)榇_實(shí)需要這些邏輯,只是跟當(dāng)前的問題不大相關(guān)。
其實(shí)問題代碼就幾行:

            if (r <= buttom) {
                rIncrease = true;
                rCount = 0;
            } else if (r >= top) {//這個(gè)地方,如果數(shù)值超出top(255)后,應(yīng)該執(zhí)行下面else部分的
                rIncrease = false;
                rCount = 0;
            }
            
            if (rIncrease) {
                r = r + 1;
            } else {            //那么應(yīng)該執(zhí)行else部分,r 不應(yīng)該繼續(xù)增大
                r = r - 1;
            }

上面的代碼中,如果 r 大于255,那么應(yīng)該進(jìn)入else if (r >= top)后面的語句塊執(zhí)行,執(zhí)行 rIncrease = false;
那么下面的if語句應(yīng)該進(jìn)入else語句塊,執(zhí)行 r = r - 1; 所以 r 不應(yīng)該再繼續(xù)增大了的?,F(xiàn)在的問題就是 r 值還在增大!

回答
編輯回答
小眼睛

function getRandom(top,bottom){

return Math.random()*(top-bottom)+bottom

}

2017年5月18日 07:20
編輯回答
我不懂

你這代碼寫的真亂,我都不想往下看??勺x性太差了。bottom也寫錯(cuò)了

2017年10月9日 09:30
編輯回答
老梗

我剛在mac上試過你得頁面,是漸變的,就是變得不柔和

2017年6月11日 03:57
編輯回答
近義詞

打個(gè)斷點(diǎn)就知道了。
這兩個(gè)瀏覽器下top都是已有的變量,應(yīng)該都是指當(dāng)前最高層的window。而chrome下,top不能被你的聲明覆蓋掉,ie下可以。
還有你頁面的的<!DOCTYPE html>確定是<html>嗎?

2017年11月12日 09:19