Para cambiar las propiedades de un elemento, es esencial que entendamos que son los eventos.
Los eventos son código JavaScript que pueden incluirse dentro de los tags del HTML y que se ejecutan cuando "algo pasa". Se los denomina event handlers.
Son varios y cada uno "detecta" una acción, puede ser pulsar un botón del ratón, moverlo, enviar un formulario, tocar una tecla, etc.
Por ejemplo al hacer CLICK AQUÍ se abre una ventana de alerta:
<A href="javascript:void(0);" onclick="alert('¡HOLA!')"> CLICK </A>
onClick="alert('Gracias'); window.location=URL_pagina'"al hacer click se mostrará un mensaje y luego se saltará a otra página web.
Otros dos eventos muy utilizados son onmouseover y onmouseout. El primero se activa cuando se pasa el cursor del ratón sobre un objeto y el segundo cuando se lo quita.
Este es un ejemplo simple donde el botón de la izquierda es del tipo denominado hover. Si se pasa el ratón sobre él, la imagen cambia. |
<a href="javascript:void(0);" onmouseover="getElementById('NOMBRE').src='URL_imagen_OVER';" onmouseout="getElementById('NOMBRE').src='URL_imagen_OUT';"> <img src="URL_imagen_OUT" id="NOMBRE" border=0 /> </a>
<IMG ID="NOMBRE" SRC="URL_imagen">
NOMBRE.src='URL_imagen'
getElementById('NOMBRE').src='URL_imagen'
Aunque en el ejemplo, el tamaño de las imágenes es el mismo pero esto no es obligatorio.
Al tener identificados los objetos mediante un nombre, podemos manipularos desde cualquier lugar de la página. Por ejemplo:
<a href="javascript:void(0);" onmouseover="getElementById('imgRIGHT').src='URL_imagenLEFT';" onmouseout="getElementById('imgRIGHT').src='URL_imagenRIGHT';"> <img src="URL_imagenLEFT" id="imgLEFT" > </a> <a href="javascript:void(0);" onmouseover="getElementById('imgLEFT').src='URL_imagenRIGHT;" onmouseout="getElementById('imgLEFT').src='URL_imagenLEFT;"> <img src="URL_imagenRIGHT" id="imgRIGHT" /> </a>Lo mismo puede hacerse para cambiar el valor de una propiedad de cualquier elemento de la página:
NOMBREID.style.color = 'valor' NOMBREID.style.fontSize = 'valor' NOMBREID.style.fontFamily = 'valor'
<script type="text/javascript"> function verocultar(href) { var c = href.nextSibling; if(c.style.display == 'none'){ c.style.display = 'block'; }else{ c.style.display = 'none'; } return false; } </script>
[+]
<div> TEXTO Ver/Ocultar <a onclick="return verocultar(this);" href="#">[+]</a><div> <!-- este DIV debe ser la continuación del vínculo A --> ............................... </div> </div>
onblur a, area, button, input, label, select, textarea | el visitante abandona un elemento que previamente entró en foco (ver onfocus) |
onchange input, select, textarea | se modifica un valor o contenido |
onfocus a, area, button, input, label, select, textarea | se selecciona o hace click en un elemento |
onkeydown input (tipo name o password), textarea | cuando se ingresa algo mediante el teclado |
onkeypress input (tipo name o password), textarea | cuando se ingresa algo mediante el teclado |
onkeyup input (tipo name o password), textarea | cuando se ingresa algo mediante el teclado |
onload body, frameset | cuando la página es cargada en el navegador |
onreset form | cuando se hace click en un botón RESET |
onselect input (tipo name o password), textarea | cuando se seleccionan caracteres |
onsubmit form | cuando se hace click en un botón SUBMIT (enviar) |
onunload body, frameset | cuando el navegador carga otra página |
27 comentarios:
Ola, mira soy nuevo en esto de blogs y no entiendo mucho de lo que esplicas, no se donde poner los codigos ni como completarlos exactamente.
Agradecería tu ayuda, muchas graxias por adelantado
El script se coloca en el encabezado de la planilla, just antes de </head>:
<script type="text/javascript">
.................................
</script>
Lo otro, donde lo vayas a usar, en la sidebar, dentro de un elemento HTML o en un post.
INFINITAS GRACIAS!!! HACE TIEMPO NO ESCRIBIA EN DHTML Y JAVA
El último script, de ocultar y ver a mí me sale al reves, osea lo tengo en mi post, pero sale ya abierto y cuando le doy clic se oculta, y creo que es al reves, a que se debe esto? :)
Colócoalo como oculto si es que así quieres que no se vea al principio:
<div style="display:none;"> .......... </div>
No, perdón, creo que no me entendió, sino que el texto que debe estar ocultado, y luego debe aparecer cuando doy clic en [+], ya aparece al principio, y no aparece oculto así como en su ejemplo.
Sí, a eso me refiero:
<div>Ver/Ocultar<a onclick="return verocultar(this);" href="#">[+]</a><div style="display:none;">
...............................
</div>
</div>
Perfecto,me salió muy bien, muchas gracias. :)
Ahora, tengo otra pregunta sobre ese mismo últim scri... lo intenté colocar, el scri.
Y cuando le doy en abrir se habren todos los que están adentros, eso siempre sucederá? o tiene arreglo? Gracias :)
No entiendo lo que quieres hacer. Lo que hace el script es mostar lo que está oculto, sea lo que sea eso que está oculto.
Lo siento, lo he copiado mal; lo que pasa es que he colocarlo el script dentro del mismo script, como una cadena, si se pued entende asi. La cosa es que cuando habro el scrip los demas scrip, que estan dentro del primero, tambien se abren a la vez; y no salen ocultos, y sí estan con esa condicion que me dio para ocultarlos. A qué se debe eso? Siempre saldrá asi?
No. No se entiende lo que estás haciendo. Si viera el código sería más fácil.
No puedo copiar el código pero haré una una representación:
1.Comienzo del scri. ver ocultar (numero uno)
1.1 Comienzo de otro scri. ver ocultar (numero dos)
1.2 Termino del scrip. (numero dos)
2. TErmino del scrip (numero uno)
Como le dije, el mismo scri. esta dentro de uno mismo, para hacer tipo cadena, el problema está en cuando habro el primero, todo los scrip. desntro de ellas tambine salen abiertos, y deberian salir cerrados. =/
Tendrías que poner un ejemplo, sno, es imposible.
yo quisiera ocultar contenidos y que al hacer click en "ver" se muestren y se empiecen a cargar en vez de que ser carguen cuando están ocultos no se si me dio a entender
En términos generalesm en Blogger eso no puede hacerse ya que requiere el uso de Ajax; depende de qué contenido sea ese que quieres cargar y desde donde lo quieres cargar.
El contenido seria imágenes y no entiendo eso de "desde donde lo quieres cargar" pienso que pregunta en que parte del blog asi que seria desde un post. Le agradecería mucho si consigue una solución a mi problema, llevo siguiendo su blog desde hace casi 3 años no comento mucho porque en general nunca he tenido dudas.
No. Digo desde donde se quiere cargar porque todo lo que se carga es un archivo alojado en alguna parte; puede ser un script, un texto, una imagen o una serie de datos.
Si de lo que se trata es de imágenes, lo más simple es recurrir a alguna clase de script que permita abrir contenido en ventanas modales como lytebox o ibox que son de las menos pesadas.
Otra forma más simple aún es una función:
<script>
function cargarimg(href,url) {
var c = href.nextSibling;
if(c.style.display == 'none') {
c.src = url;
c.style.display = 'block';
} else {
c.style.display = 'none';
c.src = '';
}
return false;
}
</script>
que se ejecuta así:
<a onclick="cargarimg(this,'URL_IMAGEN')" href="javascript:void(0);t"<click</a><img style="display:none" src=""/>
todo eso, escrito en una sola línea hará que la imagen se cargue y se muestre al hacer click y se descargue y oculte al volver a hacer click.
Muchas gracias!, ese script corto es el ideal y funciona perfecto pero como hago para colocar mas de una imagen ? Ejemplo 20 (no uso ventanas modales porque mi blog es muy pesado ya que uso otros scripts como el Instant, etc)
Gracias por responder mis preguntas.
Esa función debería poder abrir cualquier cantidad de enlaces sin inconveniente; bastaría que cambiaras la URL de la imagen a mostrar; las escribo otra vez proque en el comentario salió mal el HTML:
<a onclick="cargarimg(this,'URL_imagen1')" href="javascript:void(0);">click</a><img style="display:none" src=""/>
<a onclick="cargarimg(this,'URL_imagen2')" href="javascript:void(0);">click</a><img style="display:none" src=""/>
Puedes poner un enlace debajo de otro o uno al lado del otro, como quieras.
ok gracias por su ayuda
Tengo una duda. ¿Con este script se puede cambiar el texto del enlace? Es decir que si tengo "Más" al hacer clic cambie a "Menos". No sé si se entiende lo que quiero explicar. Ojalá pueda ayudarme.
Así como está, no; hacen falta más códigos. Por ejemplo, algo así:
function verocultar(href) {
var texto = href.innerHTML;
var c = href.nextSibling;
if(c.style.display == 'none') {
c.style.display = 'block';
texto..innerHTML = '[-]';
} else {
c.style.display = 'none';
texto..innerHTML = '[+]';
}
return false;
}
Exacto. Justo lo que quería. Muchas gracias. (No me supe explicar bien).
Se entendió perfectamente :-)
Hola maestro estoy probando el ejemplo pero en la funcion de java script me pincha aqui:
dentro del if
c.style is undefined
if(c.style.display == 'none'){
eso me sale con el firebug a que se debe?
Saludos gracias
Agrégale style="display:none" al DIV oculto.
¿Quiere dejar un comentario?
recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...
Nota: sólo los miembros de este blog pueden publicar comentarios.
Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.
Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...