Si estás aprendiendo Javascript, deberías leer más sobre el funcionamiento de búcles, matrices y document.write.
document.write te escribirá al final del documento en este caso, si deseas que un contenido que generas en una cadena salga en un mismo lugar del HTML, deberías crear un identificador en un objeto HTML, por ejemplo (DIV, p, spam, etc ...en el ejemplo use <
b>), tambien asignarle el atributo id= , que sirve como identificador del tag HTML, te servirá para luego captarlo con JavaScript.
No abuses de los condicionales, si vas a usar una condición que hace lo mismo en varias ocasiones, puedes usar búcles (while,for), lee a fondo sobre ese tema, te ahorrará mucho código.
Aquí te dejo un ejemplo, en este caso usé matrices, se puede hacer de otra forma con búcles pero este método se te hará más fácil para ti
Código HTML:
Ver original<body onload="directo()">
<div>DJ actual:
<b id="queDJletoca">Cargando...
</b></div>
<SCRIPT LANGUAGE="JavaScript">
var DJs =
{
0: "AutoDJ",
1: "Miguel Electrico",
2: "Nachek Dj",
3: "DJ Motoloco",
4: "Dj Sistern & Dj Piranha",
5: "Airon Diaz",
6: "SoundFactory"
}
var Horarios =
{
"19-1": DJs[1], "19-3": DJs[1], "19-4": DJs[1], "19-5": DJs[1],
"20-1": DJs[2], "20-3": DJs[2], "18-2": DJs[3], "18-3": DJs[3],
"18-4": DJs[3], "17-4": DJs[4], "20-5": DJs[5], "21-5": DJs[6]
}
function directo(){
var donde = document.getElementById("queDJletoca"),
date = new Date(),
dia = date.getDay(),
hora = date.getHours();
var horaYdia = hora + "-" + dia; //horaYdia ejem: 20-3 mostrará DJs[2] que es Nachek Dj
var existeHorarioDeDJ = (typeof(Horarios[horaYdia]) != "undefined"); //comprobar si hay un DJ para el horario actual
if(existeHorarioDeDJ){
donde.innerHTML = Horarios[horaYdia] //ejem: "20-3" mostrará DJs[2] que es Nachek Dj
}else{
donde.innerHTML = DJs[0] //Muestra AutoDJ
}
setTimeout("directo()",1000);
}
PD: Para estos casos también lee más sobre
jQuery.