Смяна на изображение в точно определен час

mobys

Registered
Здравейте,

някъде преди време видях сайт на телевизионно предаване, в който в определен час се появява изображение "On Air" (в ефир) и съответно при приключване на предаването се "изгасяше", т.е. сменяше изображението.

Идея как да направим нещо такова, което да работи под всички браузъри?
 
Код:
function onAir()
{
  var now = new Date();
  var hours = now.getHours();
  var msg;
  if(hours<12)
    msg = "Преди 12 часа";
  else if(hours<18)
    msg = "Преди 18 часа";
  else
    msg = "След 18";
  return(msg);
}

И в ХТМЛ-а си го викаш така (в <script> таг да е):

Код:
onAir();
 
няма нужда от Cron Job поне до колкото разбирам проблема аз js-а на колегата Fakeheal е идеален
 
Всъщност кода може да се подобри дори още повече.
Вместо да се записва съобщението в променлива, директно може да се използва return. Например:

[js]
function onAir() {
var now = new Date();
var hours = now.getHours();

if(hours<12) {
return "Преди 12 часа";
} else if (hours<18 ) {
return "Преди 18 часа";
}

return = "След 18";
}
[/js]

Причината за това е, че когато кода срещне return, директно се излиза от функцията.
 
Всъщност кода може да се подобри дори още повече.
Вместо да се записва съобщението в променлива, директно може да се използва return. Например:

[js]
function onAir() {
var now = new Date();
var hours = now.getHours();

if(hours<12) {
return "Преди 12 часа";
} else if (hours<18 ) {
return "Преди 18 часа";
}

return "След 18";
}
[/js]

Причината за това е, че когато кода срещне return, директно се излиза от функцията.
 
bytheway каза:
Всъщност кода може да се подобри дори още повече.
Вместо да се записва съобщението в променлива, директно може да се използва return. Например:

[js]
function onAir() {
var now = new Date();
var hours = now.getHours();

if(hours<12) {
return "Преди 12 часа";
} else if (hours<18 ) {
return "Преди 18 часа";
}

return "След 18";
}
[/js]

Причината за това е, че когато кода срещне return, директно се излиза от функцията.

е по тази логика като ще подобряваме

[js]
function onAir() {
if( new Date().getHours() < 12 ) {
return "Преди 12 часа";
}
return "След 18";
}
[/js]

така ще е още една идея по-добре
 
ventsi34 каза:
е по тази логика като ще подобряваме

[js]
function onAir() {
if( new Date().getHours() < 12 ) {
return "Преди 12 часа";
}
return "След 18";
}
[/js]

така ще е още една идея по-добре

А според теб какво ще върне тоя код, ако часа е 13? :)
Хубаво е човек да бъде ефективен, но в рамките на разумното :)
 
аз мислих, че става въпрос за смяна на картинката за нощ и ден примерно вечер тъмен фон през деня светъл тогава да и малко съм забравил сега ще сработи това, което аз исках да направя. Мерси за поправката :)

[js]
function onAir() {
var hour = new Date().getHours();
if( hour < 18 && hour > 7 ) {

return "ден";

}

return "нощ";

}
[/js]
 
PHP:
/* Смяна на изображенията */

function TimeChange() {
  var t=new Date();
  var h = t.getHours();
  var r1="pic1.gif";
  var r2="pic2.gif";
  var el=document.getElementById('onair');

  // Настройка на времето.
  // Пример, "7" = 7 AM; "17" =5PM.
  el.src = (h>=7 && h<17) ? r1 : r2;
}


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(function() {
  TimeChange();
});

Въпросния код си го създадох в един JavaScript файл. След това вкарвам в страницата
HTML:
<img src="" id="onair" alt="onAir">

Нещо бъркам, защото не ми се получава
 

Back
Горе