Foros del Web » Programando para Internet » Javascript »

Boton on/off

Estas en el tema de Boton on/off en el foro de Javascript en Foros del Web. Hola chico he introducido musica en mi web, y he creado un boton para on/off, la pregunta es como seria el script para que ese ...
  #1 (permalink)  
Antiguo 16/05/2012, 20:19
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 1 mes
Puntos: 0
Boton on/off

Hola chico he introducido musica en mi web, y he creado un boton para on/off, la pregunta es como seria el script para que ese mismo boton sea igual para dejarlo en mute y cuando volviese a sonar se escuchase la musica. Le he aplicado dos icono diferentes uno normal y otro cuando haces hover, y el que cuando haces hover se quede activado.
Es decir un boton para poner y quitar la musica y cuando se le pulse para cambiar el estado cambie el icono.

Gracias a todos.
  #2 (permalink)  
Antiguo 17/05/2012, 11:24
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: Boton on/off

Hola. chequea esto:

Código HTML:
Ver original
  1. <input type="button" id="onoff" value="play" class=""/>
  2. <audio id="audio" loop="loop">
  3.     <source src="path/file.ogg" type="audio/ogg" >
  4.     <source src="path/file.mp3" type="audio/mp3" >

Código Javascript:
Ver original
  1. window.onload = function(){
  2.     var audio  = document.getElementById("audio");
  3.     var button = document.getElementById("onoff");
  4.     //autoplay            
  5.         audio.play(); button.value = "pause";
  6.     //toggle
  7.     button.onclick = function(){
  8.         if(button.value == 'play'){
  9.             audio.play();
  10.             button.value = "pause";
  11.         }
  12.         else{
  13.             audio.pause();
  14.              button.value = "play";
  15.         }
  16.     }
  17. }

En el condicional del evento onclick del boton podes añadir a este una clase "activo" (button.className = "activo") en la que luego aplicas estilos css a gusto (.activo{/*prop:val;*/}).

Saludos
  #3 (permalink)  
Antiguo 17/05/2012, 20:47
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Boton on/off

Cita:
Iniciado por cristian_cena Ver Mensaje
Hola. chequea esto:

Código HTML:
Ver original
  1. <input type="button" id="onoff" value="play" class=""/>
  2. <audio id="audio" loop="loop">
  3.     <source src="path/file.ogg" type="audio/ogg" >
  4.     <source src="path/file.mp3" type="audio/mp3" >

Código Javascript:
Ver original
  1. window.onload = function(){
  2.     var audio  = document.getElementById("audio");
  3.     var button = document.getElementById("onoff");
  4.     //autoplay            
  5.         audio.play(); button.value = "pause";
  6.     //toggle
  7.     button.onclick = function(){
  8.         if(button.value == 'play'){
  9.             audio.play();
  10.             button.value = "pause";
  11.         }
  12.         else{
  13.             audio.pause();
  14.              button.value = "play";
  15.         }
  16.     }
  17. }

En el condicional del evento onclick del boton podes añadir a este una clase "activo" (button.className = "activo") en la que luego aplicas estilos css a gusto (.activo{/*prop:val;*/}).

Saludos
Me viene casi perfecto, solo me falla dos detalles.

1-lo primero es que he cambiado image en vez de button, ya que el aspecto de button me rompia el diseño, incluso a pesar de ponerle imagen de fondo al button,y ahora en la imagen, me sale un borde que me sigue molestando.
2. Al aplicarle la clase, no me funciona para volver a reproducirlo, tengo que recargar la pagina.

Muchas gracias sobre todo. te dejo el codigo.

HTML
<input type="image" id="onOff" value="play" class=""/>
<audio id="audio" loop="loop">
<source src="path/file.ogg" type="audio/ogg" >
<source src="music/sleepAway.mp3" type="audio/mp3" >
</audio>

SCRIPT

<script type="text/javascript">
window.onload = function(){
var audio = document.getElementById("audio");
var image = document.getElementById("onOff");
//autoplay
audio.play(); image.value = "";
//toggle
image.onclick = function(){
if(image.value == 'play'){
audio.play();
image.value = "";
}
else{
audio.pause();
image.value = "";
image.className = "activo";
}
}
}
</script>

CSS

#onOff{
position: relative;
float: left;
width: 25px;
height: 25px;
background-image: url('../img/on.jpg');
margin-top: 4px;
cursor: pointer;
border:none;
}

#onOff.activo{
background-image: url('../img/off.jpg');
cursor: pointer;
border: none;
}

Última edición por maurikius1983; 17/05/2012 a las 20:58
  #4 (permalink)  
Antiguo 17/05/2012, 20:59
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: Boton on/off

Cita:
Iniciado por maurikius1983 Ver Mensaje
como seria para al volver a pulsar se active otra vez
Código Javascript:
Ver original
  1. // ...
  2. if(button.value == 'play'){
  3. // ...
  4.     button.className = "activo";
  5. }
  6. else{
  7. // ...
  8.     button.className = "";
  9. }
  10. // ...

Cita:
Iniciado por maurikius1983 Ver Mensaje
seria posible utilizar en vez un button una imagen directamente
Si, solo reemplaza el input por la imagen, es decir, lo que cuenta es que mantengas el identificador.
  #5 (permalink)  
Antiguo 18/05/2012, 05:34
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Boton on/off

Cita:
Iniciado por cristian_cena Ver Mensaje
Código Javascript:
Ver original
  1. // ...
  2. if(button.value == 'play'){
  3. // ...
  4.     button.className = "activo";
  5. }
  6. else{
  7. // ...
  8.     button.className = "";
  9. }
  10. // ...

Si, solo reemplaza el input por la imagen, es decir, lo que cuenta es que mantengas el identificador.
Ya me funciona perfecto, la habia cagado por no mirar bien el codigo, queria ponerlo en estado activo tanto cuando esta inactivo como cuando no. Ya esta perfec, solo me falta quitarle el border a la image.
  #6 (permalink)  
Antiguo 18/05/2012, 06:09
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Boton on/off

Bueno ya lo he solucionado, he mirado en unos ejercicios que tenia antiguos y es un poco trampa, pero como no me acuerdo como hacer para quitar el borde en la imagen de fondo del image input, lo que he hecho ha sido poner una imagen completamente transparente, y ya los fondos del CSS no aparecen con el bordemolesto.
Muchas gracias por la ayuda, si saben como quitar el border ok, si no por mi cierren el post.
  #7 (permalink)  
Antiguo 18/05/2012, 11:43
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: Boton on/off

usa la propiedad css "border",
si queres profundizar esta guía es muy buena: http://www.librosweb.es/css/index.html
  #8 (permalink)  
Antiguo 18/05/2012, 18:57
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Boton on/off

Cita:
Iniciado por cristian_cena Ver Mensaje
usa la propiedad css "border",
si queres profundizar esta guía es muy buena: [url]http://www.librosweb.es/css/index.html[/url]
Muchas gracias por la info, pero de CSS y HTML no tengo problemas, conozco todas la propiedades casi, el problema esque en los input en algunos navegadores, aparece un borde, que aunque aplicando border:none, o border:0 , te sigue apareciendo. y eso lo he solucionado mil veces poniendo una imagen totalmente transparente como img, y ya pongo lo que quiero de background, Muchas gracias por la ayuda prestada cristian_cena, ya lo tengo todo como queria, quizas en el script de on/off no se si por cansancio o yo que se, no he dado como sacarlo, ya que si hubiera sido con todas la propiedades de audio con html5 se saca de momento, pero solo un boton me ha dejado fuera de juego. Repito que muchas gracias y si necesitas algo me mandas un privado y te ayudo. Gracias
  #9 (permalink)  
Antiguo 18/05/2012, 19:05
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: Boton on/off

De nada y me alegro que te haya servido.
PD: apuesto a que dentro de las propiedades que desconoces está "outline" ;)
  #10 (permalink)  
Antiguo 18/05/2012, 20:15
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Boton on/off

Cita:
Iniciado por cristian_cena Ver Mensaje
De nada y me alegro que te haya servido.
PD: apuesto a que dentro de las propiedades que desconoces está "outline" ;)
#onOff{
position: relative;
float: left;
width: 25px;
height: 25px;
background-image: url('../img/on.jpg');
margin-top: 4px;
cursor: pointer;
border: 0;
outline: none;
color:transparent;
}

#onOff.activo{
background-image: url('../img/on.jpg');
cursor: pointer;
border: 0;
outline: none;
}

#onOff.inactivo{
background-image: url('../img/off.jpg');
cursor: pointer;
border: 0;
outline: none;
}

Asi lo tengo y no me lo quitaba, se que el outline es parecido al border pero fuera de los parametros.
  #11 (permalink)  
Antiguo 18/05/2012, 20:19
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Boton on/off

He vuelto a comprobarlo y tanto none como "0", no me lo acepta, En este caso en chrome es parecido a un border de 1px solid blanquecino, y no me lo quita, lo he intentado, y nada, lo que si recuerdo es que una vez me dijo un compi que el lo soluciono con la imagen transparente, y asi lo hice y ok, igual que ahora, se que hacer lo de la img es trampa, pero no puedo perder demasiado tiempo en una sola cosa.

Etiquetas: botones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:33.