Простая задача Javascript, показать div и вызвать функцию в определенный день

#javascript

#javascript

Вопрос:

Ребята, у меня проблема. У меня очень плохой опыт работы с javascript. В принципе, я хочу показывать div по пятницам, а также вызывать функцию lightning () по пятницам. Да, это ужасный скрипт, и вы можете догадаться, к чему это приведет, но я не могу понять, как вызвать оба, используя мой текущий скрипт.

 <script type="text/javascript">

    <!--
    //Lighting script
    var flash=0
    function lightning()
    {flash=flash 1;
    if(flash==1){document.bgColor='green'; setTimeout("lightning()",100);}
    if(flash==2){document.bgColor='black'; setTimeout("lightning()",90);}
    if(flash==3){document.bgColor='red'; setTimeout("lightning()",85);}
    if(flash==4){document.bgColor='blue'; setTimeout("lightning()",80);}
    if(flash==5){document.bgColor='purple'; setTimeout("lightning()",75);}
    if(flash==6){document.bgColor='green'; setTimeout("lightning()",70);}
    if(flash==7){document.bgColor='black'; setTimeout("lightning()",65);}
    if(flash==8){document.bgColor='red'; setTimeout("lightning()",60);}
    if(flash==9){document.bgColor='blue'; setTimeout("lightning()",50);}
    if(flash==10){document.bgColor='purple'; setTimeout("lightning()",40);}
    if(flash==11){document.bgColor='black'; setTimeout("lightning()",30);}
    if(flash==12){document.bgColor='red'; setTimeout("lightning()",25);}
    if(flash==13){document.bgColor='red'; setTimeout("lightning()",20);}
    if(flash==14){document.bgColor='blue'; setTimeout("lightning()",10);}
    if(flash==15){document.bgColor='purple'; setTimeout("lightning()",5);}
    if(flash==16){document.bgColor='white'; setTimeout("lightning()",1);}
    if(flash==17){document.bgColor='black'; setTimeout("lightning()",1);}
    if(flash==18){document.bgColor='blue'; setTimeout("lightning()",1);}
    if(flash==19){document.bgColor='purple'; setTimeout("lightning()",1);}
    if(flash==20){flash=0; setTimeout("lightning()",100);}
    }

    // -->

    onload=function(){
        var rightNow = new Date();
        var day = rightNow.getDay();
        var hour = rightNow.getHours();
        var minute = rightNow.getMinutes();
        var formDisplay = 'none'; // unless we see otherwise
        var forwardDisplay = 'block'; // unless we see otherwise

        if(day==1 || day==2  ||  day==3  ||  day==4 ) {  // friday friday, got to get down on Friday            if((hour>=1)  amp;amp;  (hour<=24)) // if chat is avalable between these times
                formDisplay = 'block', forwardDisplay = 'none'; 

            }

            }


    document.getElementById('friday').style.display = formDisplay; 
    document.getElementById('friday').style.display = forwardDisplay; 

    }

    // alert('Test Alert')
    </script>

    <div id='friday' >
    <object width="560" height="349"><param name="movie" value="http://www.youtube.com/v/CD2LRROpph0?fs=1amp;autoplay=1amp;amp;hl=en_USamp;amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/CD2LRROpph0?fs=1amp;autoplay=1amp;amp;hl=en_USamp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="349"></embed></object>
    </div>
  

Кто-нибудь может указать мне правильное направление? Заранее благодарю вас!

Комментарии:

1. Что тебя задерживает? Действительно ли это выясняет, является ли пятница пятницей, объединяя страницу в целом?

2. Привет, Джон, спасибо, что откликнулся. Я борюсь со способом показать как div в пятницу, так и вызвать функцию lightning. Сценарий правильно определяет, будет ли сегодня пятница. Я не знаком с синтаксисом и с тем, как вызвать оба варианта с помощью текущего скрипта, ничего из того, что я пробую, не работает.

3. Боже милостивый, эта lighting() функция просто кошмарна.

4. Почему у вас есть html-комментарий в вашем javascript? Я не думаю, что вам нужна поддержка браузера для Netscape 1.

5. Это прекрасно выглядит в действии. Ты помог мне создать монстра.

Ответ №1:

Это?

 if(day===5 ) { //if Friday
    formDisplay = 'block';
    forwardDisplay = 'none'; 
    lightning();
}
  

Комментарии:

1. Спасибо за ваш вклад, этот фрагмент, похоже, игнорирует «какой сегодня день» и запускает эту раздражающую маленькую мигающую функцию независимо от дня. Мне нужно, чтобы это сработало только в день == 5.

2. Это странно, прямо там есть проверка для day == 5. В любом случае, у вас, похоже, есть решение 🙂

Ответ №2:

Вам нужно это убрать, чтобы было легче видеть, что происходит. Замените вашу функцию onload на это.

 onload=function(){
  var rightNow = new Date();
  var day = rightNow.getDay();
  var isFriday = (day == 5);
  if(isFriday){
    document.getElementById('friday').style.display = 'block';
    lightning();
  } else {
    document.getElementById('friday').style.display = 'none';
  }
}
  

Комментарии:

1. Майк, огромное тебе спасибо. Это идеально; Я просто немного запутался с синтаксисом. Ты хороший человек.

Ответ №3:

Просто хотел опубликовать, как можно очистить эту часть:

 //Lighting script
var flash = 0;
var timeout = 0;
var color = '';

function lightning() {
    flash = flash   1;

    if (flash === 1) { color = 'green'; timeout = 100; }
    else if (flash === 2) { color = 'black'; timeout = 90; }
    else if (flash === 3) { color = 'red'; timeout = 85; }
    else if (flash === 4) { color = 'blue'; timeout = 80; }
    else if (flash === 5) { color = 'purple'; timeout = 75; }
    else if (flash === 6) { color = 'green'; timeout = 70; }
    else if (flash === 7) { color = 'black'; timeout = 65; }
    else if (flash === 8) { color = 'red'; timeout = 60; }
    else if (flash === 9) { color = 'blue'; timeout = 50; }
    else if (flash === 10) { color = 'purple'; timeout = 40; }
    else if (flash === 11) { color = 'black'; timeout = 30; }
    else if (flash === 12) { color = 'red'; timeout = 25; }
    else if (flash === 13) { color = 'red'; timeout = 20; }
    else if (flash === 14) { color = 'blue'; timeout = 10; }
    else if (flash === 15) { color = 'purple'; timeout = 5; }
    else if (flash === 16) { color = 'white'; timeout = 1; }
    else if (flash === 17) { color = 'black'; timeout = 1; }
    else if (flash === 18) { color = 'blue'; timeout = 1; }
    else if (flash === 19) { color = 'purple'; timeout = 1; }
    else if (flash === 20) { flash = 0; timeout = 100; }

            document.bgColor = color;

    setTimeout(function() {
        lightning();
    }, timeout);
}
  

Или с синтаксисом switch / case:

 //Lighting script
var flash = 0;
var timeout = 0;
var color = '';

function lightning() {
    flash = flash   1;

    switch (flash) {
        case 1: color = 'green'; timeout = 100; break;
        case 2: color = 'black'; timeout = 90; break;
        case 3: color = 'red'; timeout = 85; break;
        case 4: color = 'blue'; timeout = 80; break;
        case 5: color = 'purple'; timeout = 75; break;
        case 6: color = 'green'; timeout = 70; break;
        case 7: color = 'black'; timeout = 65; break;
        case 8: color = 'red'; timeout = 60; break;
        case 9: color = 'blue'; timeout = 50; break;
        case 10: color = 'purple'; timeout = 40; break;
        case 11: color = 'black'; timeout = 30; break;
        case 12: color = 'red'; timeout = 25; break;
        case 13: color = 'red'; timeout = 20; break;
        case 14: color = 'blue'; timeout = 10; break;
        case 15: color = 'purple'; timeout = 5; break;
        case 16: color = 'white'; timeout = 1; break;
        case 17: color = 'black'; timeout = 1; break;
        case 18: color = 'blue'; timeout = 1; break;
        case 19: color = 'purple'; timeout = 1; break;
        case 20: flash = 0; timeout = 100; break;
    }   

    document.bgColor = color;

    setTimeout(function () {
        lightning();
    }, timeout);
}
  

Комментарии:

1. Возможно, было бы еще лучше использовать здесь оператор switch.

2. Сначала я собирался использовать переключатель, но тогда прокрутка в этом окне была бы слишком длинной. К черту это, я все равно вставлю это.