Preguntas Frecuentes

254
Preguntas Frecuentes (FAQ) EFECTOS Javascript: Cambiar el color de una celda (Redirigido desde Cambiar el color de una celda ) P: ¿Cómo puedo cambiar el color de una celda al pasar el ratón? <table border=0 cellpadding=0 cellspacing=0> <tr> <td onmouseover="this.style.background='red'" onmouseout="this.style.background='white'"> Texto de la celda </td> </tr> </table> --Chivi 01 Dic 2002 Los navegadores modernos soportan este efecto (y muchos otros) via CSS , sin necesidad de utilizar Javascript . Principalmente aquellos navegadores basados en el motor Gecko (Firefox , Seamonkey , Epiphany y otros), los basados enKHTML /WebKit (Safari , Chrome , Konqueror ) y Opera . La excepción a la regla, como suele suceder en el tema de soporte a estándares web, es Internet Explorer . IE 6 (que en el año en el que se escribió el código Javascript mostrado aquí era la *nueva versión*) solamente soporta la pseudoclase hover en etiquetas A (enlaces). IE7 sí la soporta para otros elementos, pero solamente en modo estándar . La cuota de mercado actual de Internet Explorer 6 se ubica entre 15% y 20% [1] , lo cual implica que ese porcentaje de usuarios no será capaz de ver el efecto si está construido únicamente con CSS. Los usuarios de IE7 tampoco podrán ver el efecto si el sitio no utiliza HTML válido. Si soportar el efecto con IE6 es prioritario, y no tiene sentido utilizar un enlace para el efecto de cambio de color, deberá utilizarse Javascript. Si el efecto es puramente estético o si el

Transcript of Preguntas Frecuentes

Page 1: Preguntas Frecuentes

Preguntas Frecuentes (FAQ)EFECTOS

Javascript: Cambiar el color de una celda(Redirigido desde Cambiar el color de una celda)

P: ¿Cómo puedo cambiar el color de una celda al pasar el ratón?

<table border=0 cellpadding=0 cellspacing=0><tr><td onmouseover="this.style.background='red'" onmouseout="this.style.background='white'">Texto de la celda</td></tr></table>

--Chivi 01 Dic 2002

Los navegadores modernos soportan este efecto (y muchos otros) via CSS, sin necesidad de

utilizar Javascript. Principalmente aquellos navegadores basados en el

motor Gecko(Firefox, Seamonkey, Epiphany y otros), los basados

enKHTML/WebKit (Safari, Chrome, Konqueror) y Opera.

La excepción a la regla, como suele suceder en el tema de soporte a estándares web,

es Internet Explorer. IE 6 (que en el año en el que se escribió el código Javascript mostrado

aquí era la *nueva versión*) solamente soporta la pseudoclase hover en etiquetas A (enlaces).

IE7 sí la soporta para otros elementos, pero solamente en modo estándar. La cuota de

mercado actual de Internet Explorer 6 se ubica entre 15% y 20% [1], lo cual implica que ese

porcentaje de usuarios no será capaz de ver el efecto si está construido únicamente con CSS.

Los usuarios de IE7 tampoco podrán ver el efecto si el sitio no utiliza HTML válido.

Si soportar el efecto con IE6 es prioritario, y no tiene sentido utilizar un enlace para el efecto de

cambio de color, deberá utilizarse Javascript. Si el efecto es puramente estético o si el

porcentaje de usuarios de IE6 en el sitio es lo suficientemente bájo, debería utilizarse el código

CSS.

Versión CSS

<table border=0 cellpadding=0 cellspacing=0>

Page 2: Preguntas Frecuentes

<tr><td class="efecto">Texto de la celda</td></tr>.efecto { background : white;}.efecto:hover { background : red;

Javascript: Barra de estado <a href="indice.htm" onmouseover="status='Ir al Índice'; return true" onmouseout="status=''">Home</a>

Éste es uno de los más facilitos

Hay que tener en cuenta que algunos navegadores modernos en su configuración por defecto

no permiten que los scripts modifiquen el texto de la barra de estado.

Javascript: enlaces(Redirigido desde Enlaces)

P.- ¿Cómo quitar el marco de los enlaces?

R.- Añadiendo onFocus="this.blur()"

<a href="http://www.pagina.com" onfocus="this.blur()">Enlace</a>

Javascript: Frase diaria(Redirigido desde Frase diaria)

P: ¿Como puedo colocar en mi página una frase distinta cada día de la semana?

<html> <head> <script language="JavaScript"> function frase(){ var aFrases = new Array("Texto del Domingo", "Texto del Lunes", "Texto del Martes",

Page 3: Preguntas Frecuentes

"Texto del Miércoles", "Texto del Jueves", "Texto del Viernes", "Texto del Sábado"); var fecha = new Date(); var indice = fecha.getDay(); return aFrases[indice]; } </script> </head> <body> <form name="frm"> <h1> <script language="JavaScript"> document.write(frase()); </script> </h1> </form> </body></html>

Javascript: Un efecto chachi para texto y no muy complicado(Redirigido desde Un efecto chachi para texto y no muy complicado)

Un efecto para texto y no muy complicado.

<script language="javascript" type="text/javascript">var TimerID;var updown = true;var str = 1;function start(){if (document.all)TimerID = window.setInterval( "wave()", 100 );}function wave(){if ( str > 10 || str < 1 )updown = !updown;if ( updown )str++;elsestr--;wft.filters( "wave" ).phase = str * 20;wft.filters( "wave" ).strength = str;}

Page 4: Preguntas Frecuentes

window.onload=start</script><div id = "wft" style = "font-family:Arial;font-size:10pt;width:60px; filter:wave(add=0, freq=7, light=0, phase=0, strength=5)" class = "big"><b>Ruchu</b></div>

Javascript: Mostrar/ocultar capas(Redirigido desde Mostrar/ocultar capas)

P.- ¿Cómo puedo mostrar/ocultar capas pulsando sobre un enlace?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es-es"><head>

<title>Ocultar Elementos</title><meta http-equiv="Content-Type" content="text/html;

charset=utf-8" /><script type="text/javascript">

function cambio(idCapa){var capa = document.getElementById(idCapa);capa.style.display = (capa.style.display ==

"none") ? "block" : "none";}

</script></head><body>

<div><div id="capa1">

Esta es la capa 1</div><div id="capa2">

Esta es la capa 2</div><a href="#" onclick="cambio('capa1')">Muestra/oculta la

capa 1</a><a href="#" onclick="cambio('capa2')">Muestra/oculta la

capa 2</a></div>

</body></html>

Javascript: Detectar tecla(Redirigido desde Detectar tecla)

Page 5: Preguntas Frecuentes

P.- ¿Como puedo detectar la tecla pulsada?

R.- Código de ejemplo:

<html><script type="text/javascript"> function mostrar(caracter) { letra = caracter.which || event.keyCode; l = String.fromCharCode(letra); alert("Usted presionó la letra: "+l+" Codigo: "+letra); } window.onkeypress = mostrar;</script><body>Pulsa una tecla.</body></html>

Javascript: Sonido en los Enlaces(Redirigido desde Sonido en los Enlaces)

¿Cómo puedo poner un sonido a mis enlaces al situar el ratón encima?

<html><head><script language="javascript" type="text/javascript">function Reproducir(){document.all.sound.src = "archivo.wav"}function Parar(){document.all.sound.src = ""}</script></head><body>En el Body:<bgsound id="sound"><a href="pagina_que_sea" onmouseover="Reproducir()" onmouseout="Parar()">Enlace 1</a><a href="pagina_que_sea" onmouseover="Reproducir()" onmouseout="Parar()">Enlace 2</a></body></html>

Javascript: Dar estilos CSS para los links(Redirigido desde Dar estilos CSS para los links)

Page 6: Preguntas Frecuentes

P: ¿Como doy estilos CSS a los hipervinculos?

Bueno, es un sistema sencillo para darle un toque de alegría a nuestras páginas. me lo bajé de

la página de bravenet. si me equivoco y lo publico en el de javascript en vez de en el de HTML,

pido disculpas, pero tiene algo de javascript

Cambiar el color al pasar el ratón por lo alto del enlace...

<a href="" onmouseover="this.style.color='red';" onmouseout="this.style.color='';">This HREF turns red on hover.</a>

Hipervinculos o links de color verde.

<a href="" style="color:green;">This HREF is green.</a>

Hipervinculo sin raya por debajo

<a href="" style="text-decoration: none;">This HREF has no underline.</a>

Linea de espacio en hipervinculo

<a href="" style="line-spacing:150%;">These HREFs are spaced 150% of normal.</a><a href="" style="line-spacing:150%;">These HREFs are spaced 150% of normal.</a>

Espacio entre los caracteres de un hipervinculo

<a href="" style="letter-spacing:5px;">This HREF has 5 pixels between letters</a>

Color de fondo en los enlaces

<a href="" style="background:ffffcc;">This HREF has a yellow background.</a>

Javascript: Buenos días amigo(Redirigido desde Buenos días amigo)

Page 7: Preguntas Frecuentes

P: ¿Como puedo dar los buenos días a mi amigo o visitante y que siempre que entre a mi sitio

le de los buenos días?

R: Con una cookie

<script language="javascript" type="text/javascript"> var today = new Date();var hora=today.getHours(); var expiry = new Date(today.getTime() + 28 * 24 * 60 * 60 * 1000); // 28 diasfunction setCookie(name, value) {document.cookie=name + "=" + escape(value) + "; expires=" + expiry.toGMTString();} function lee(valor){document.cookie.search(RegExp("("+valor+"=)([^;]*)(;*)","gi"))return unescape(RegExp.$2)}if(lee('usass'))var usuario = lee('usass')else{var u=prompt("Introduce tu Nombre","")if(u){setCookie('usass',u);usuario=u}else{usuario = "Usuario"}} if (hora<6)alert(usuario+" Hoy has madrugado mucho...¿O no te has acostado?");else if (hora<12)alert(usuario+" Buenos d&iacute;as");else if (hora<=18)alert("Buenas Tardes "+usuario);else alert("Buenas Noches "+usuario);</script>

Javascript: Quitar recuadro punteado de enlace(Redirigido desde Quitar recuadro punteado de enlace)

¿Como puedo quitar el recuadro de puntos de un enlace activo?

<html><head><script language="javascript" type="text/javascript">

Page 8: Preguntas Frecuentes

function prende() { anclas=document.getElementsByTagName("a").length; for (i=0;i<anclas;i++) document.getElementsByTagName("a").item(i).onfocus=new Function("if(this.blur)this.blur()") }</script></head> <body onLoad="prende()"><a href="#">Enlace1</a> <a href="#">Enlace2</a> <a href="#">Enlace3</a> </body></html>

Javascript:Poner texto vertical(Redirigido desde Poner texto vertical)

<center><OBJECT ID="pepe" CLASSID="CLSID:369303C2-D7AC-11d0-89D5-00A0C90833E6" STYLE="position:relative; width:300px; height:200 px"> <PARAM NAME="Line0001" VALUE="SetLineStyle(1)"> <PARAM NAME="Line0002" VALUE="SetLineColor(0,0,0)"> <PARAM NAME="Line0003" VALUE="SetFillColor(255,128,0)"> <PARAM NAME="Line0004" VALUE="SetFont('Arial', 20, 0, 0, 1, 0)"> <PARAM NAME="Line0005" VALUE="Text('Foros del Web', 0, 0, 0)"> </OBJECT><script>function eje1() { pepe.Rotate(15, 0, 0);} function eje2() { pepe.Rotate(0, 15, 0);} function eje3() { pepe.Rotate(0, 0, 15);}</script><input type=button onClick=eje1(); value="eje 1"><input type=button onClick=eje2(); value="eje 2"><input type=button onClick=eje3(); value="eje 3"><!--SetLineStyle(valor)valor=0 => Sin línea de contorno de texto.

Page 9: Preguntas Frecuentes

valor=1 => Línea continuavalor=2 => Linea discontinua SetLineColor(R, G, B)Intensidad del color (R=rojo, G=verde, B=azul)de 0 a 255 de la linea de contorno de texto. SetFillColor(R, G, B)Intensidad del color (R=rojo, G=verde, B=azul)del relleno del texto SetFont('font', Tam, B, It, Sub, Tach)font: Arial, Verdana, etcéteraTam: El tamaño de la letraB: 0=> Normal; 1=> Bold.It: 0=> Normal; 1=> Itálica.Sub: 0=> Normal; 1=> SubrayadoTach: 0=> Normal; 1=> Tachado Text('texto', H, V, R)texto: El texto que se muestraH: Posición horizontal inicialV: Posición vertical inicialR: Rotación plana inicial-->

Javascript: Enlaces autoexplicativos(Redirigido desde Enlaces autoexplicativos)

P.- ¿Cómo poner enlaces con una explicación desplegable del mismo abajo?

<html><head><style>body{ font:normal 10px/20px verdana;} blockquote{ border:solid 1px black; font:normal 10px/12px verdana; background:#ffffcc; margin:1px 1px 1px 20px; padding:5px 5px 5px 5px; width:500px; }.norm{ color:blue; border:none; font:normal 10px/10px verdana; text-decoration:underline;

Page 10: Preguntas Frecuentes

}img{ border:none; }</style> <script language="javascript" type="text/javascript"> //Script original de KarlanKas con la colaboración de caricatos para Forosdelweb.com  explicacion=new Array;enlace=new Array;texto=new Array; //-------------------------- EDITABLE ---------------------------enlace[0]="http://www.forosdelweb.com";texto[0]="Ir a foros del web."explicacion[0]="Foros del Web es el foro de programación hispana más visitado por los habitantes de la luna de Gaminedes."; enlace[1]="http://www.webareyou.com";texto[1]="Visitar Web Are You. La página en eterna construcción."explicacion[1]="Todos los seres abducidos tienen, desde la LSSI, la obligación de tener una página web explicando sus experiencias. Aquí está la mía."; enlace[2]="http://www.estiloweb.com";texto[2]="Necesitas ayuda?"explicacion[2]="Cuando uno se enfrenta a la realización de una página web siempre le surgen dudas... con webestilo.com se resuelve más de una..."; enlace[3]="http://www.tunait.com";texto[3]="Quieres charlar, divertirte y demás con la página de tunait?"explicacion[3]="Nuestra querida tunait nos regala una magnífica página donde su plato fuerte es un magnífico foro lleno de buen rollito y diversión... no os lo perdais!"; enlace[4]="http://www.pepemolina.com";texto[4]="Qué tal visitar la página de caricatos?"explicacion[4]="Quien no recuerda el generador de código o el enviador de postales...? Caricatos no sólo responde, sino que genera nuevas inquietudes a cada momento. Visitad la página donde recoge todos sus avances!"; // SE PUEDE PONER TANTOS COMO SE QUIERA //---------------------------------FIN DE CÓDIGO EDITABLE--------------------------------

Page 11: Preguntas Frecuentes

 function anadir(texto,esto){t=textotexto=document.getElementById("enlace"+texto)if(!texto.primero){texto.primero=texto.innerHTML}if(isNaN(texto.ensenar)){texto.ensenar=-1}var pepe=texto.ensenarpepe=pepe*-1texto.ensenar=pepeif (texto.ensenar==1){esto.innerHTML="-";texto.innerHTML=texto.innerHTML+"<blockquote>"+explicacion[t]+"</blockquote>" }if (texto.ensenar==-1){;texto.innerHTML=texto.primero}  } </script><title>FAQ 104.- Enlaces autoexplicativos </title></head> <body> <script language="javascript" type="text/javascript">for (w=0;w<enlace.length;w++){document.writeln('<div id="enlace'+w+'"><a onfocus="blur()" href="#" onclick="anadir('+w+',this)">+</a><a class="norm" HREF="'+enlace[w]+'" target="_blank">'+texto[w]+'</a></div>');}</script></body></html>

Javascript: Sonido antes de un salto(Redirigido desde Sonido antes de un salto)

P: ¿Cómo escuchar un sonido antes de hacer un link?

R: Adaptando este script con los valores adecuados

<html><head>

Page 12: Preguntas Frecuentes

<script language="javascript" type="text/javascript">function ReproducirYSaltar(son, retardo, salto) { if (document.all) document.all.sound.src = son; document.getElementById("sound2").src = son; setTimeout("salto('" + salto + "')", retardo);} function salto(x) { location.href = x;}</script></head><body ><bgsound id=sound style="visibility:hidden"><embed id=sound2 hidden=true><a href="javascript:ReproducirYSaltar('UNDO.MID', 3000, 'http://www.sucaricatura.com' )" > Enlace de caricauras </a><br><a href="javascript:ReproducirYSaltar('UNDO.MID', 4000, 'http://www.pepemolina.com/postales' )" > Enlace de Postales digitales </a><br><a href="javascript:ReproducirYSaltar('UNDO.MID', 6000, 'http://www.pepemolina.com/visitas/visitas.php' )" > Firme en mi libro de visitas </a><br></body></html>

Javascript: Reemplazar(Redirigido desde Reemplazar)

P . - ¿Cómo reemplazar o eliminar subcadenas de una cadena?

Combinando el método split para convertir una cadena en un array y join que hace lo

contrario... Poniendo como párámetro del split, lo que se quiere quitar, y en join la nueva

subcadena (cadena vacía para eliminar)

var invertirBarra = "Hola/amigos/del/foro".split("/").join("\");

deja la variable invertirBarra = "Hola\amigos\del\foro";

Javascript: Barra de scroll personalizada(Redirigido desde Barra de scroll personalizada)

Page 13: Preguntas Frecuentes

P.- ¿Cómo hacer una barraa de scroll personalizada con los iconos formas y colores que

quiera?

<html><head> <title>Barra de desplazamiento</title> <script>//Script original de KarlanKas para Forosdelweb.com//Muchas gracias a todos los que colaboraron en la elaboración de este script, en especial a JavierB, artífice de la compatibilidad del mismo con NS.   ancho=700; altoVentana=300; altoContenido=700; altoBoton=20; anchoBoton=15; incremento=5; // ---------------------------NO EDITAR-------------------------------- recorrido=altoVentana-(2*altoBoton) altoBarra=recorrido*(altoVentana/altoContenido); recorridoBarra=recorrido-altoBarra; incrementoBarra=incremento*(recorridoBarra/(altoContenido-altoVentana)); recorridoAcumuladoBarra=0; recorridoAcumuladoContenido=0; anchoContenido=ancho-anchoBoton; no=false; var yy=0; pulsado=false; var mouseY;  if (altoVentana>=altoContenido){no=true} altoBarra+=incrementoBarra+1     estilo='<style>'; estilo+='#ventana{' estilo+=' height:'+altoVentana+'px;'; estilo+=' width:'+ancho+'px;'; estilo+=' z-index:1;'; estilo+=' border:solid 1px black;'; estilo+=' overflow:hidden;'; estilo+=' position:relative;';  estilo+='}'

Page 14: Preguntas Frecuentes

    estilo+='#botonArriba{ position:absolute;'; estilo+=' padding:0px 0px 0px 0px;'; estilo+=' font:normal 8px/8px courier;'; estilo+=' top:0px;'; estilo+=' width:'+anchoBoton+'px;'; estilo+=' height:'+altoBoton+'px;';  estilo+=' z-index:99;'; estilo+=' cursor:hand;'; estilo+=' left:'+(ancho-anchoBoton)+'px;'; estilo+=' }' estilo+='#botonAbajo{ position:absolute;'; estilo+=' padding:0px 0px 0px 0px;'; estilo+=' font:normal 9px/9px courier;'; estilo+=' width:'+anchoBoton+'px;'; estilo+=' height:'+altoBoton+'px;'; estilo+=' top:'+(altoVentana-altoBoton)+'px;'; estilo+=' left:'+(ancho-anchoBoton)+'px;'; estilo+=' z-index:99;'; estilo+=' cursor:hand;'; estilo+='}'; estilo+='</style>';   estiloContenido='style="'; estiloContenido+=' width:'+(anchoContenido)+'px;'; estiloContenido+=' padding:10px 10px 10px 10px;'; estiloContenido+=' font:normal 10px/15px verdana;'; estiloContenido+=' position:absolute;'; estiloContenido+=' top:0px;'  estiloContenido+=' left:0px;' estiloContenido+=' background:#ffffcc;'; estiloContenido+=' border-right:solid black 1px;'; estiloContenido+=' height:'+altoContenido+'px;'; estiloContenido+=' overflow:hidden;'; estiloContenido+=' text-align:justify;"';   estiloBarra='style="position:absolute;'; estiloBarra+=' width:'+anchoBoton+'px;'; estiloBarra+=' position:absolute;'; estiloBarra+=' top:'+altoBoton+'px;'; estiloBarra+=' z-index:99;'; estiloBarra+=' cursor:hand;'; estiloBarra+=' left:'+(ancho-anchoBoton)+'px;'; if (no){estiloBarra+=' visibility:hidden;';} estiloBarra+=' height:'+altoBarra+'px;"';

Page 15: Preguntas Frecuentes

    document.write(estilo); </script>     <script for="ventana" event="onmousewheel"> if(document.all){mover(event.wheelDelta/30)} </script> <script > function ratonAbajo(){  if (document.all){yy=event.clientY;} else{yy = coorY; } pulsado=true;} </script> <script> function mover(hacia){  nB=parseInt(document.getElementById("barra").style.top); nC=parseInt(document.getElementById("contenido").style.top);  if (((nC+(hacia*incremento))<incremento) && (nC+(hacia*incremento)>(altoVentana-altoContenido))){recorridoAcumuladoBarra-=(hacia*incrementoBarra);recorridoAcumuladoContenido+=(hacia*incremento); if(recorridoAcumuladoContenido>0){recorridoAcumuladoContenido=0}if(recorridoAcumuladoBarra<altoBoton){recorridoAcumuladoBarra=altoBoton}if(recorridoAcumuladoBarra> (recorridoBarra+altoBoton)){recorridoAcumuladoBarra=recorridoBarra+altoBoton}  document.getElementById("contenido").style.top=recorridoAcumuladoContenido; document.getElementById("barra").style.top=recorridoAcumuladoBarra;  }}  function ratonMoviendose(){if(pulsado){

Page 16: Preguntas Frecuentes

if (document.all){y=event.clientY;}else{ y = coorY; }yy=yy-y;yyy=yy/incrementoBarra;mover(yyy);yy=y;}} function seVa(){ pulsado=false;  } </script></head> <body><div id="ventana"> <script> document.write('<div id="contenido" '+estiloContenido+'>'); </script> 1 Texto<br>2 Texto<br>3 Texto<br>4 Texto<br>5 Texto<br>6 Texto<br>7 Texto<br>8 Texto<br>9 Texto<br>10 Texto<br>-----------------------------------------<br>11 Texto<br>12 Texto<br>13 Texto<br>14 Texto<br>15 Texto<br>16 Texto<br>17 Texto<br>18 Texto<br>19 Texto<br>20 Texto<br>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</br>21 Texto<br>22 Texto<br>23 Texto<br>24 Texto<br>25 Texto<br>

Page 17: Preguntas Frecuentes

26 Texto<br>  </div> <input type="button" value="?" id="botonArriba" onMouseOver="pepe22=window.setInterval('mover(1)',20)" onMouseOut="window.clearInterval(pepe22)">  <input type="button" value="?" id="botonAbajo" onMouseOver="if(no==false){pepe22=window.setInterval('mover(-1)',20)}" onMouseOut="if(!no){window.clearInterval(pepe22)}" >  <script> document.write('<input type="button"'); document.write(' id="barra" onMouseDown="ratonAbajo()"'); document.write(' onMouseMove="ratonMoviendose()"'); document.write(' onMouseUp="seVa()" onMouseOut="seVa()" '); document.write(estiloBarra); document.write(' >'); //----------------------RATON EN NS-------------------------------document.onmousemove = mouseMove;var ns6 = (document.getElementById && !document.all) ? true: false;var coorY;if (ns6) document.getElementById('barra').addEventListener("mousemove", mouseMove, true)function mouseMove(e){if (ns6) {coorY = e.pageY;}return true;}</script></div></body></html>

Javascript: Fondo degradado(Redirigido desde Fondo degradado)

P .- Como puedo poner un fondo degradado en una página.

R .- Poniendo mediante un script que en primer lugar averigue las dimensiones de la página, y

luego inserte en una capa vacía una tabla vacía pero con el fondo de cada celda con distinto

Page 18: Preguntas Frecuentes

color. Los tamaños de las celdas, se calculan a partir de los datos del tamaño de la página, y

los colores se generan dinámicamente.

<html><head><title> Degradado</title><script language="javascript" type="text/javascript">function color(n) { return "0123456789ABCDEF".charAt(parseInt(n / 16)) + "0123456789ABCDEF".charAt(parseInt(n % 16));} function ini() { var elFondo = document.getElementById("fondo").style; var ancho = document.body.clientWidth; var alto = document.body.clientHeight; elFondo.width = ancho; elFondo.height = alto; var altoCelda = alto / 256; var tabla = "<table cellpadding=0 cellspacing=0 width=100% height=100%>"; for (var i = 255; i >= 0; i --) tabla += "<tr><td width=100% height=" + altoCelda + " style='background-color: #FF" + color(i) + "00' ></td></tr>" tabla += "</table>"; document.getElementById("fondo").innerHTML = tabla;}</script> </head><body style="margin:0" onresize=ini() onload="ini()"><div style="position: relative"><div id=fondo style="position:absolute; top:0; left:0;"></div><div id=general style="position:absolute; top:0; left:0;"><table border=1><tr><td >Tabla sin importancia</td></tr></table><div></div></body></html>

Javascript: Cambiar color a las celdas de una tabla(Redirigido desde Cambiar color a las celdas de una tabla)

Page 19: Preguntas Frecuentes

P: ¿Como puedo alterar el color de una celda donde se ha producido un click, retornando luego

al color original cuando se produzca un click en otra celda?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head> <title>Untitled</title> <script language="javascript" type="text/javascript"> <!-- var celda_ant;  celda_ant="";  function ilumina(celda){ if (celda_ant=="") { celda_ant = celda; } celda_ant.style.backgroundColor="green"; celda.style.backgroundColor="yellow"; celda_ant = celda; } //--> </SCRIPT></head> <body> <table border="1" width="50%"> <tr> <td bgcolor="green" onclick="ilumina(this)">rrr</td> <td bgcolor="green" onclick="ilumina(this)">iii</td> <td bgcolor="green" onclick="ilumina(this)">rrr</td> <td bgcolor="green" onclick="ilumina(this)">iii</td> </tr> <tr> <td bgcolor="green" onclick="ilumina(this)">rrr</td> <td bgcolor="green" onclick="ilumina(this)">iii</td> <td bgcolor="green" onclick="ilumina(this)">rrr</td> <td bgcolor="green" onclick="ilumina(this)">iii</td> </tr></table> </body></html>

Javascript: Manipulación de strings(Redirigido desde Manipulación de strings)

Page 20: Preguntas Frecuentes

P: ¿Como puedo eliminar los espacios en blanco del comienzo o del final de una cadena?

function lTrim(sStr){ while (sStr.charAt(0) == " ") sStr = sStr.substr(1, sStr.length - 1); return sStr; }  function rTrim(sStr){ while (sStr.charAt(sStr.length - 1) == " ") sStr = sStr.substr(0, sStr.length - 1); return sStr; }  function allTrim(sStr){ return rTrim(lTrim(sStr)); }

Ejemplo de uso:

var texto = " Texto con espacios al inicio y al final "; alert("Original: <" + texto + ">\n" + "rTrim: <" + rTrim(texto) + ">\n" + "lTrim: <" + lTrim(texto) + ">\n" + "allTrim: <" + allTrim(texto) + ">\n");

También, se puede usar expresiones regulares para el efecto:

function lTrim(sStr) { return sStr.replace(/^\s+/, ""); } function rTrim(sStr) { return sStr.replace(/\s+$/, ""); } function allTrim(sStr) { return rTrim(lTrim(sStr)); }

Javascript: Calcular el tiempo que tarda en cargarse una página(Redirigido desde Calcular el tiempo que tarda en cargarse una página)

P: ¿Como puedo poner en una página el tiempo que ha tardado en cargarse en el navegador

del usuario?

Page 21: Preguntas Frecuentes

<html><head><script language="javascript" type="text/javascript">var inicio=new Date();inicio=inicio.getTime();function ini() { fin=new Date(); fin=fin.getTime(); tiempo=(fin-inicio)/1000; //Gracias por el consejo, Ferny document.getElementById('tmp').innerHTML=tiempo;}</script></head> <body onLoad="ini()">Tiempo que ha tardado la página en cargarse: <span id="tmp">Calculando...</span> segundos.</body></html>

Javascript: Ver la página a distintas resoluciones(Redirigido desde Ver la página a distintas resoluciones)

P.- ¿Cómo puedo ver si mi página se verá bien a una resolución menor que la que tiene mi PC

sin tener que cambiar la configuración de la pantalla de mi ordenador?

R.- Esto es un pequeño truco que se vale de la posibilidad de ejectar sentencias de JS en la

barra de Dirección del navegador. Sólo se debe, una vez en la página que queremos ver a otra

resolución, poner en la barra de dirección:

En realidad no debe ser 600 el alto, debería ser 540 poruqe con la barra de inicio se pierde un

espacio (valioso) que ha de tenerse en cuenta. El ejemplo es para todos los que tenemos la

pantalla a 1024x768 o superior y tenemos la fastidiosa labor de hacer páginas a 800x600.

Javascript: Mensaje según la hora(Redirigido desde Mensaje según la hora)

P: ¿Como puedo mostrar un mensaje en mi pagina dependiendo de la hora?

<script language="javascript" type="text/javascript">

Page 22: Preguntas Frecuentes

document.write("<div align='center' style='font:bold 14px verdana;'>")day = new Date()hr = day.getHours()if (hr == 1) document.write("It's after 1 am. Are you still up?")if (hr == 2) document.write("It's after 2 am. Are you still up?")if (hr == 3) document.write("It's after 3 am. Are you still up?")if (hr == 4) document.write("It's after 4 am. Are you still up?")if (hr == 5) document.write("It's after 5 am. Are you still up?")if (hr == 6) document.write("It's after 6 am, yawn!")if (hr == 7) document.write("Good Morning! It's after 7 am")if (hr == 8) document.write("It's after 8 am")if (hr == 9) document.write("It's after 9 am")if (hr == 10) document.write("It's after 10 am, coffee time!")if (hr == 11) document.write("It's after 11 am")if (hr == 12) document.write("It's after noon")if (hr == 13) document.write("Good Afternoon! It's after 1 pm")if (hr == 14) document.write("It's after 2 pm")if (hr == 15) document.write("It's after 3 pm")if (hr == 16) document.write("It's after 4 pm")if (hr == 17) document.write("Good Evening! It's after 5 pm")if (hr == 18) document.write("It's after 6 pm, eat some dinner!")if (hr == 19) document.write("It's after 7 pm")if (hr == 20) document.write("It's after 8 pm")if (hr == 21) document.write("It's after 9 pm")if (hr == 22) document.write("It's after 10 pm")if (hr == 23) document.write("It's after 11 pm, go to bed!")if (hr == 0) document.write("It's after midnight.")document.write("</div>") </script>

Javascript: Reemplazo dentro de un string(Redirigido desde Reemplazo dentro de un string)

P.: ¿Cómo puedo sustituir una subcadena por otra en una cadena?

<script language="javascript" type="text/javascript">cadena="esta casa es azul";cadena=cadena.replace("azul","verde");</script>

Page 23: Preguntas Frecuentes

Javascript: Eliminación de parte de un string(Redirigido desde Eliminación de parte de un string)

P.: ¿Cómo puedo eliminar una subcadena de una cadena?

<script language="javascript" type="text/javascript">cadena="esta casa es azul";cadena=cadena.replace("casa","");</script>

Javascript: Scroll (marquesina) de texto(Redirigido desde Scroll (marquesina) de texto)

P: ¿Como puedo colocar un scroll de texto (marquesina) en mi página?

<html><head><script language="javascript" type="text/javascript"><!--var bannerID=0function text(msg,ctrlwidth) { msg = " --- "+msg newmsg = msg while (newmsg.length < ctrlwidth) { newmsg += msg } document.write ('<FORM NAME="Scrolltext">'); document.write ('<CENTER><INPUT NAME="text" VALUE= "'+newmsg+'" SIZE= '+ctrlwidth+' ></CENTER>'); document.write ('</FORM>'); var bannerID = null rollmsg()}function rollmsg() { NowMsg = document.Scrolltext.text.value NowMsg = NowMsg.substring(1,NowMsg.length)+NowMsg.substring(0,1) document.Scrolltext.text.value = NowMsg bannerID = setTimeout("rollmsg()",100)//change the number 100 to represent the speed of the scroll. The larger the number the slower it moves}// --></script> 

Page 24: Preguntas Frecuentes

</head> <body><script>

Javascript: Efecto: Estela en el puntero del mouse(Redirigido desde Efecto: Estela en el puntero del mouse)

P: ¿Como dejar una Estela en el puntero del mouse?

R: Copia el siguiente script entre las etiquetas <body> y </body>:

<script language="javascript" type="text/javascript"> <!-- Mouse Comet II script by [email][email protected][/email]colours=new Array('#6699FF','#6699FF','#6699FF','#6699FF','#6699FF','#6699FF','#6699FF','#6699FF','#6699FF')n = 10;y = 0;x = 0;n6=(document.getElementById&&!document.all);ns=(document.layers);ie=(document.all);d=(ns||ie)?'document.':'document.getElementById("';a=(ns||n6)?'':'all.';n6r=(n6)?'")':'';s=(ns)?'':'.style';if (ns){for (i = 0; i < n; i++)document.write('<layer name="dots'+i+'" top=0 left=0 width='+i/2+' height='+i/2+' bgcolor=#ff0000></layer>');}if (ie)document.write('<div id="con" style="position:absolute;top:0px;left:0px"><div style="position:relative">');if (ie||n6){for (i = 0; i < n; i++)document.write('<div id="dots'+i+'" style="position:absolute;top:0px;left:0px;width:'+i/2+'px;height:'+i/2+'px;background:#ff0000;font-size:'+i/2+'"></div>');}if (ie)

Page 25: Preguntas Frecuentes

document.write('</div></div>');(ns||n6)?window.captureEvents(Event.MOUSEMOVE):0;function Mouse(evnt){y = (ns||n6)?evnt.pageY+4 - window.pageYOffset:event.y+4;x = (ns||n6)?evnt.pageX+1:event.x+1;}(ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse;function animate(){o=(ns||n6)?window.pageYOffset:0;if (ie)con.style.top=document.body.scrollTop;for (i = 0; i < n; i++){var temp1 = eval(d+a+"dots"+i+n6r+s); randcolours = colours[Math.floor(Math.random()*colours.length)];(ns)?temp1.bgColor = randcolours:temp1.background = randcolours; if (i < n-1){var temp2 = eval(d+a+"dots"+(i+1)+n6r+s);temp1.top = parseInt(temp2.top);temp1.left = parseInt(temp2.left);} else{temp1.top = y+o;temp1.left = x;}}setTimeout("animate()",10);}animate();// --></script>

Dentro del vector colours se almacenan los colores de las diferentes posiciones de la estela, los

cuales pueden ser modificados a gusto propio.

colours=new Array('#6699FF','#6699FF','#6699FF','#6699FF','#6699FF','#6699FF','#6699FF','#6699FF','#6699FF')

--ACHAVARRIA invitado, 07 Nov 2003

Javascript: Efecto: "terremoto" en el navegador(Redirigido desde Efecto: "terremoto" en el navegador)

P: ¿Como puedo hacer con JavaScript un efecto de "terremoto"?

Page 26: Preguntas Frecuentes

R: No sé si este efecto sea útil, pero puede resultar algo divertido. Se trata de un JavaScript

que tiene como función realizar un efecto de "terremoto" o "sacudir" la ventana del navegador.

El siguiente script lo ubicamos dentro del cuerpo de la página (entre los tags <body> y </body>)

<script language="javascript" type="text/javascript"><!-- This script and many more are available free online at --><!-- The JavaScript Source!! [url]http://javascript.internet.com[/url] -->function shake_xy(n) {if (self.moveBy) {for (i = 10; i > 0; i--) {for (j = n; j > 0; j--) {self.moveBy(0,i);self.moveBy(i,0);self.moveBy(0,-i);self.moveBy(-i,0);}}}} function shake_x(n) {if (self.moveBy) {for (i = 10; i > 0; i--) {for (j = n; j > 0; j--) {self.moveBy(i,0);self.moveBy(-i,0);}}}} function shake_y(n) {if (self.moveBy) {for (i = 10; i > 0; i--) {for (j = n; j > 0; j--) {self.moveBy(0,i);self.moveBy(0,-i);}}}} //--> </script>

Y luego realizamos un link a la función:

<a href="javascript:shake_xy(3)">Sacudir pantalla</a>

Page 27: Preguntas Frecuentes

O con un botón:

<input type=button value="Sacudir pantalla" onclick="shake_x(4)">

Javascript: Texto vertical(Redirigido desde Texto vertical)

P.-Quiero poner un texto en vertical. ¿Cómo lo hago?

<script language="javascript" type="text/javascript">/******************************* Texto vertical. Por Carlitos. [email protected] Si usas este script, deja intactas estas líneas (créditos). Vale? También te agradecería un e-mail con tus comentarios.*******************************/ function escribe(msg){cont =0; while (cont<msg.length) { letra = msg.substring(cont,cont+1) document.write(letra+"<br>") cont+=1 } }</script></head>

Javascript: Efecto Fade de colores con el texto(Redirigido desde Efecto Fade de colores con el texto)

P: ¿Cómo puedo crear un efecto fade de colores con el texto?

<script language="javascript" type="text/javascript">function change(){re="rgb("+Math.round(Math.random()*256)+","+Math.round(Math.random()*256)+","+Math.round(Math.random()*256)+")"text.style.color=re;}

Page 28: Preguntas Frecuentes

setInterval(change,1000);</script>

luego en el body pon algo así donde quisieras que el texto con el fade de colores apareciera

<p id="text"> Escribe aquí el mensaje. </p>

Javascript: Citas aleatorias(Redirigido desde Citas aleatorias)

P: ¿Cómo puedo añadir a mi web citas aleatorias?

En el head pon esto....

<script language="javascript" type="text/javascript">var Quotation=new Array()Quotation[0] = "Foros del Web, el mejor sitio para aprender.";Quotation[1] = "Escribe las citas que quieras en estos sitios.";Quotation[2] = "Hoy es un día precioso para aprender algo nuevo";Quotation[3] = "Soy un probecillo aprendiz.";Quotation[4] = "Y encima nadie me hace caso en la vida :-(.";var Q = Quotation.length;var whichQuotation=Math.round(Math.random()*(Q-1));function showQuotation() {document.write(Quotation[whichQuotation]);}</script>

Si quieres que aparezca en el body escribe lo siguiente....

<script language="javascript" type="text/javascript"> showQuotation(); </script>

puedes configurarlo para que aparezca donde tu quieras, en una table, en un div, en un iframe,

en un alert, en fin ....

tan solo comentar que puedes ir añadiendo mas citas, todas las que quieras, tan solo, en las

nuevas citas, escribe...

Quotation[5] = "Cuanto más aprendo, mas ignorante me siento";Quotation[6] = "Creo que algún día tiraré la toalla :-(";

y así sucesivamente con el 7, el 8, el 9, etc.

Page 29: Preguntas Frecuentes

Javascript: Girar Imágenes(Redirigido desde Girar Imágenes)

P.- ¿Cómo girar una imagen usando sólo javascript?

R.- La inclusión de soporte para el elemento html estandar llamado canvas en la mayoría de los

navegadores modernos, junto a filtros propietarios del único navegador popular que no soporta

dicho elemento, nos permiten tranquilamente realizar esta tarea. A continuación mostramos un

ejemplo del resultado que obtendremos al aplicar el código abajo detallado:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>test</title><script>function rotar(obj,angulo){ if (angulo >= 0) { var rotation = Math.PI * angulo / 180; } else { var rotation = Math.PI * (360+angulo) / 180; } var costheta = Math.cos(rotation); var sintheta = Math.sin(rotation); if (document.createElement("canvas").getContext) { /* ---- canvas ---- */ var c=document.createElement('canvas');

Page 30: Preguntas Frecuentes

c.width = Math.abs(costheta*obj.width) + Math.abs(sintheta*obj.height); c.style.width = c.width+'px'; c.height = Math.abs(costheta*obj.height) + Math.abs(sintheta*obj.width); c.style.height=c.height+'px'; c.id=obj.id; c.style.position='absolute'; var ctx=c.getContext('2d'); ctx.save(); if (rotation <= Math.PI/2) { ctx.translate(sintheta*obj.height,0); } else if (rotation <= Math.PI) { ctx.translate(c.width,-costheta*obj.height); } else if (rotation <= 1.5*Math.PI) { ctx.translate(-costheta*obj.width,c.height); } else { ctx.translate(0,-sintheta*obj.width); } ctx.rotate(rotation); ctx.drawImage(obj, 0, 0, obj.width, obj.height); obj.parentNode.replaceChild(c,obj); ctx.restore(); }else{ /* ---- DXImageTransform ---- */ obj.style.position='absolute'; obj.style.filter="progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand')"; obj.filters.item(0).M11 = costheta; obj.filters.item(0).M12 = -sintheta; obj.filters.item(0).M21 = sintheta; obj.filters.item(0).M22 = costheta; }}window.onload=function(){ rotar(document.getElementById('pp'),60); }</script></head> <body><img src="1.jpg" width="180" height="127" /><div id="ll" style="position:relative; "><img id="pp" src="1.jpg" width="180" height="127" /></div></body></html>

Page 31: Preguntas Frecuentes

FECHA Y HORA

Javascript: Mostrar Fecha y Hora(Redirigido desde Mostrar Fecha y Hora)

P: ¿Cómo puedo mostrar la Fecha y la Hora actual?

<html> <head> <script language="JavaScript">/*Fecha y Hora By Chivi*/ /* Coeminza el script del Reloj */ function actualizaReloj(){  /* Capturamos la Hora, los minutos y los segundos */marcacion = new Date()  /* Capturamos la Hora */Hora = marcacion.getHours()  /* Capturamos los Minutos */Minutos = marcacion.getMinutes()  /* Capturamos los Segundos */Segundos = marcacion.getSeconds()  /* Si la Hora, los Minutos o los SegundosSon Menores o igual a 9, le añadimos un 0 */ if (Hora<=9)Hora = "0" + Hora if (Minutos<=9)Minutos = "0" + Minutos if (Segundos<=9)Segundos = "0" + Segundos /* Termina el Script del Reloj */

Page 32: Preguntas Frecuentes

  /* Coemienza eñ Script de la Fecha */ var Dia = new Array("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo");var Mes = new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");var Hoy = new Date();var Anio = Hoy.getFullYear();var Fecha = "Hoy es " + Dia[Hoy.getDay()] + ", " + Hoy.getDate() + " de " + Mes[Hoy.getMonth()] + " de " + Anio + ", a las "; /* Termina el script de la Fecha */  /* Creamos 4 variables para darle formato a nuestro Script */var Inicio, Script, Final, Total /*En Inicio le indicamos un color de fuente y un tamaño */Inicio = "<font size=3 color=red>" /* En Reloj le indicamos la Hora, los Minutos y los Segundos */Script = Fecha + Hora + ":" + Minutos + ":" + Segundos /* En final cerramos el tag de la fuente */Final = "</font>" /* En total Finalizamos el Reloj uniendo las variables */Total = Inicio + Script + Final /* Capturamos una celda para mostrar el Reloj */document.getElementById('Fecha_Reloj').innerHTML = Total /* Indicamos que nos refresque el Reloj cada 1 segundo */setTimeout("actualizaReloj()",1000) }</script> <body onload="actualizaReloj()">Aquí mostramos la Fecha y la hora:<table border=0 cellpadding=0 cellspacing=0><tr><td id="Fecha_Reloj"></td></tr></table></body></html>

Page 33: Preguntas Frecuentes

Javascript: Validación de fechas(Redirigido desde Validación de fechas)

P: ¿Como puedo validar una o mas fechas escritas en elementos TEXT?

<html> <head> <script language="JavaScript">  function esDigito(sChr){ var sCod = sChr.charCodeAt(0); return ((sCod > 47) && (sCod < 58)); }  function valSep(oTxt){ var bOk = false; var sep1 = oTxt.value.charAt(2); var sep2 = oTxt.value.charAt(5); bOk = bOk || ((sep1 == "-") && (sep2 == "-")); bOk = bOk || ((sep1 == "/") && (sep2 == "/")); return bOk; }  function finMes(oTxt){ var nMes = parseInt(oTxt.value.substr(3, 2), 10); var nAno = parseInt(oTxt.value.substr(6), 10); var nRes = 0; switch (nMes){ case 1: nRes = 31; break; case 2: nRes = 28; break; case 3: nRes = 31; break; case 4: nRes = 30; break; case 5: nRes = 31; break; case 6: nRes = 30; break; case 7: nRes = 31; break; case 8: nRes = 31; break; case 9: nRes = 30; break; case 10: nRes = 31; break; case 11: nRes = 30; break; case 12: nRes = 31; break; } return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0); }  function valDia(oTxt){ var bOk = false; var nDia = parseInt(oTxt.value.substr(0, 2), 10); bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt))); return bOk; }

Page 34: Preguntas Frecuentes

  function valMes(oTxt){ var bOk = false; var nMes = parseInt(oTxt.value.substr(3, 2), 10); bOk = bOk || ((nMes >= 1) && (nMes <= 12)); return bOk; }  function valAno(oTxt){ var bOk = true; var nAno = oTxt.value.substr(6); bOk = bOk && ((nAno.length == 2) || (nAno.length == 4)); if (bOk){ for (var i = 0; i < nAno.length; i++){ bOk = bOk && esDigito(nAno.charAt(i)); } } return bOk; }  function valFecha(oTxt){ var bOk = true; if (oTxt.value != ""){ bOk = bOk && (valAno(oTxt)); bOk = bOk && (valMes(oTxt)); bOk = bOk && (valDia(oTxt)); bOk = bOk && (valSep(oTxt)); if (!bOk){ alert("Fecha inválida"); oTxt.value = ""; oTxt.focus(); } else alert("Fecha correcta"); } }  </script> </head> <body> <form name="frm"> Escriba fecha (dd/mm/aaaa): <input type="text" size="10" name="fec"> <br> <input type="button" value="Validar"  onclick="valFecha(document.frm.fec)"> </form> </body></html>

Page 35: Preguntas Frecuentes

Javascript: Resta de horas(Redirigido desde Resta de horas)

P: ¿Como puedo obtener la resta de dos horas almacenadas en elementos TEXT?

<html> <head> <script language="JavaScript">  function padNmb(nStr, nLen){ var sRes = String(nStr); var sCeros = "0000000000"; return sCeros.substr(0, nLen - sRes.length) + sRes; }  function stringToSeconds(tiempo){ var sep1 = tiempo.indexOf(":"); var sep2 = tiempo.lastIndexOf(":"); var hor = tiempo.substr(0, sep1); var min = tiempo.substr(sep1 + 1, sep2 - sep1 - 1); var sec = tiempo.substr(sep2 + 1); return (Number(sec) + (Number(min) * 60) + (Number(hor) * 3600)); }  function secondsToTime(secs){ var hor = Math.floor(secs / 3600); var min = Math.floor((secs - (hor * 3600)) / 60); var sec = secs - (hor * 3600) - (min * 60); return padNmb(hor, 2) + ":" + padNmb(min, 2) + ":" + padNmb(sec, 2); }  function substractTimes(t1, t2){ var secs1 = stringToSeconds(t1); var secs2 = stringToSeconds(t2); var secsDif = secs1 - secs2; return secondsToTime(secsDif); }  function calcT3(){ with (document.frm) t3.value = substractTimes(t1.value, t2.value); }  </script> </head> <body> <form name="frm"> Hora1 (hh:mm:ss): <input type="text" name="t1" value="12:30:15"><br>

Page 36: Preguntas Frecuentes

Hora2 (hh:mm:ss): <input type="text" name="t2" value="3:40:18"><br> <hr> Resta (hh:mm:ss): <input type="text" name="t3" value=""><br><br> <input type="button" onclick="calcT3()" value="Restar"> </form> </body></html>

Javascript: Validar un rango de fechas(Redirigido desde Validar un rango de fechas)

P: ¿Como puedo validar un rango de fechas para que ambos valores sean no vacíos, válidos, y

la fecha hasta sea mayor o igual que la fecha desde?

<html> <head> <script language="JavaScript">  function esDigito(sChr){ var sCod = sChr.charCodeAt(0); return ((sCod > 47) && (sCod < 58)); }  function valSep(oTxt){ var bOk = false; bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-")); bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/")); return bOk; }  function finMes(oTxt){ var nMes = parseInt(oTxt.value.substr(3, 2), 10); var nAno = parseInt(oTxt.value.substr(6), 10); var nRes = 0; switch (nMes){ case 1: nRes = 31; break; case 2: nRes = 28; break; case 3: nRes = 31; break; case 4: nRes = 30; break; case 5: nRes = 31; break; case 6: nRes = 30; break; case 7: nRes = 31; break; case 8: nRes = 31; break; case 9: nRes = 30; break; case 10: nRes = 31; break;

Page 37: Preguntas Frecuentes

case 11: nRes = 30; break; case 12: nRes = 31; break; } return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0); }  function valDia(oTxt){ var bOk = false; var nDia = parseInt(oTxt.value.substr(0, 2), 10); bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt))); return bOk; }  function valMes(oTxt){ var bOk = false; var nMes = parseInt(oTxt.value.substr(3, 2), 10); bOk = bOk || ((nMes >= 1) && (nMes <= 12)); return bOk; }  function valAno(oTxt){ var bOk = true; var nAno = oTxt.value.substr(6); bOk = bOk && ((nAno.length == 2) || (nAno.length == 4)); if (bOk){ for (var i = 0; i < nAno.length; i++){ bOk = bOk && esDigito(nAno.charAt(i)); } } return bOk; }  function valFecha(oTxt){ var bOk = true; if (oTxt.value != ""){ bOk = bOk && (valAno(oTxt)); bOk = bOk && (valMes(oTxt)); bOk = bOk && (valDia(oTxt)); bOk = bOk && (valSep(oTxt)); return bOk; } }  function fechaMayorOIgualQue(fec0, fec1){ var bRes = false; var sDia0 = fec0.value.substr(0, 2); var sMes0 = fec0.value.substr(3, 2); var sAno0 = fec0.value.substr(6, 4); var sDia1 = fec1.value.substr(0, 2); var sMes1 = fec1.value.substr(3, 2); var sAno1 = fec1.value.substr(6, 4);

Page 38: Preguntas Frecuentes

if (sAno0 > sAno1) bRes = true; else { if (sAno0 == sAno1){ if (sMes0 > sMes1) bRes = true; else { if (sMes0 == sMes1) if (sDia0 >= sDia1) bRes = true; } } } return bRes; }  function valFechas(){ var bOk = false; if (valFecha(document.f1.fec0)){ if (valFecha(document.f1.fec1)){ if (fechaMayorOIgualQue(document.f1.fec1, document.f1.fec0)){ bOk = true; alert("Ok"); } else { alert("Rango inválido"); document.f1.fec1.focus(); } } else { alert("Fecha inválida"); document.f1.fec1.focus(); } } else { alert("Fecha inválida"); document.f1.fec0.focus(); } }  </script> </head> <body> <form name="f1"> <table> <tr> <td align="right"> Fecha inicial (dd/mm/aaaa): </td> <td> <input type="text" size="10" name="fec0"> </td> </tr> <tr> <td align="right"> Fecha final (dd/mm/aaaa): </td>

Page 39: Preguntas Frecuentes

<td> <input type="text" size="10" name="fec1"> </td> </tr> <tr> <td colspan="2" align="center"> <input type="button" name="val" value="Validar" onclick="valFechas()"> </td> </tr> </table> </form> </body></html>

Javascript: Sumar meses a una fecha(Redirigido desde Sumar meses a una fecha)

P: ¿Cómo puedo sumar (o restar) una cantidad de meses a una fecha válida?

<html> <head> <script language="JavaScript"> function cerosIzq(sVal, nPos){ var sRes = sVal; for (var i = sVal.length; i < nPos; i++) sRes = "0" + sRes; return sRes; }  function armaFecha(nDia, nMes, nAno){ var sRes = cerosIzq(String(nDia), 2); sRes = sRes + "/" + cerosIzq(String(nMes), 2); sRes = sRes + "/" + cerosIzq(String(nAno), 4); return sRes; }  function sumaMes(nDia, nMes, nAno, nSum){ if (nSum >= 0){ for (var i = 0; i < Math.abs(nSum); i++){ if (nMes == 12){ nMes = 1; nAno += 1; } else nMes += 1; } } else { for (var i = 0; i < Math.abs(nSum); i++){

Page 40: Preguntas Frecuentes

if (nMes == 1){ nMes = 12; nAno -= 1; } else nMes -= 1; } } return armaFecha(nDia, nMes, nAno); }  function calcula(){ var sFc0 = document.frm.fecha0.value; // Se asume válida var nSum = parseInt(document.frm.meses.value); var sFc1 = sFc0; if (!isNaN(nSum)){ var nDia = parseInt(sFc0.substr(0, 2)); var nMes = parseInt(sFc0.substr(3, 2)); var nAno = parseInt(sFc0.substr(6, 4)); sFc1 = sumaMes(nDia, nMes, nAno, nSum); } document.frm.fecha1.value = sFc1; } </script> </head> <body> <form name="frm"> <table border="0"> <tr> <td> <table border="1"> <tr> <td align="right"> Fecha inicial (dd/mm/aaaa) </td> <td> <input type="text" name="fecha0" value="21/03/2002"> </td> </tr> <tr> <td align="right"> Meses </td> <td> <input type="text" name="meses" value="0"> </td> </tr> <tr> <td align="right"> Fecha final (dd/mm/aaaa) </td> <td> <input type="text" name="fecha1" readonly>

Page 41: Preguntas Frecuentes

</td> </tr> </table> </td> </tr> <tr> <td align="center"> <input type="button" value="Calcular" onclick="calcula()"> </td> </tr> </table> </form> </body></html>

Javascript: Reloj en la barra de estado(Redirigido desde Reloj en la barra de estado)

P.- ¿Cómo puedo poner un reloj en la barra de estado?

<html><title>Status Hora y día</title><head> <script language="JavaScript"> <!-- Script by: Francis Woodhouse ([email protected]) --> <!-- function runClock() {theTime = window.setTimeout("runClock()", 1000);var today = new Date();var display= today.toLocaleString();status=display;}// --></script>  <body onLoad="runClock()"> </body></html>

Page 42: Preguntas Frecuentes

Javascript: Sumar (o restar) días a una fecha(Redirigido desde Sumar (o restar) días a una fecha)

P: ¿Como puedo sumar o restar días a una fecha?

<html><head> <script language="JavaScript">  var aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);  function finMes(nMes, nAno){ return aFinMes[nMes - 1] + (((nMes == 2) && (nAno % 4) == 0)? 1: 0); }  function padNmb(nStr, nLen, sChr){ var sRes = String(nStr); for (var i = 0; i < nLen - String(nStr).length; i++) sRes = sChr + sRes; return sRes; }  function makeDateFormat(nDay, nMonth, nYear){ var sRes; sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0"); return sRes; }  function incDate(sFec0){ var nDia = parseInt(sFec0.substr(0, 2), 10); var nMes = parseInt(sFec0.substr(3, 2), 10); var nAno = parseInt(sFec0.substr(6, 4), 10); nDia += 1; if (nDia > finMes(nMes, nAno)){ nDia = 1; nMes += 1; if (nMes == 13){ nMes = 1; nAno += 1; } } return makeDateFormat(nDia, nMes, nAno); }  function decDate(sFec0){

Page 43: Preguntas Frecuentes

var nDia = Number(sFec0.substr(0, 2)); var nMes = Number(sFec0.substr(3, 2)); var nAno = Number(sFec0.substr(6, 4)); nDia -= 1; if (nDia == 0){ nMes -= 1; if (nMes == 0){ nMes = 12; nAno -= 1; } nDia = finMes(nMes, nAno); } return makeDateFormat(nDia, nMes, nAno); }  function addToDate(sFec0, sInc){ var nInc = Math.abs(parseInt(sInc)); var sRes = sFec0; if (parseInt(sInc) >= 0) for (var i = 0; i < nInc; i++) sRes = incDate(sRes); else for (var i = 0; i < nInc; i++) sRes = decDate(sRes); return sRes; }  function recalcF1(){ with (document.formulario){ fecha1.value = addToDate(fecha0.value, increm.value); } }  </script></head><body> <form name="formulario"> <table> <tr> <td align="right"> Fecha (dd/mm/aaaa): </td> <td> <input type="text" name="fecha0" size="10"> </td> </tr> <tr> <td align="right"> Incremento: </td> <td> <input type="text" name="increm" size="3"> </td>

Page 44: Preguntas Frecuentes

</tr> <tr> <td align="right"> Resultado (dd/mm/aaaa): </td> <td> <input type="text" name="fecha1" disabled size="10"> </td> </tr> <tr> <td colspan="2" align="center"> <input type="button" onclick="recalcF1()" value="Calcular"> </td> </tr> </table> </form></body></html>

Javascript: Valores iniciales de un rango de fechas(Redirigido desde Valores iniciales de un rango de fechas)

P: ¿Como puedo asignar los valores iniciales a un rango de fechas?

<html> <head> <script language="JavaScript">  // Funciones comunes a todos los métodos de selección  function padNmb(nStr, nLen, sChr){ var sRes = String(nStr); for (var i = 0; i < nLen - String(nStr).length; i++) sRes = sChr + sRes; return sRes; }  function makeDateFormat(nDay, nMonth, nYear){ var sRes; sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0"); return sRes; }  function prevMonth(nMonth){ return ((nMonth + 10) % 12) + 1;

Page 45: Preguntas Frecuentes

}  function prevMonth_Year(nMonth, nYear){ return nYear - (((nMonth + 10) % 12) + 1 == 12? 1: 0); }  function lastDayOfMonth(nMonth, nYear){ var aMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); if ((nMonth == 2) && (nYear % 4 == 0)) return 29; else return aMonth[nMonth - 1]; }  function incDate(sFec0){ var nDia = parseInt(sFec0.substr(0, 2), 10); var nMes = parseInt(sFec0.substr(3, 2), 10); var nAno = parseInt(sFec0.substr(6, 4), 10); nDia += 1; if (nDia > lastDayOfMonth(nMes, nAno)){ nDia = 1; nMes += 1; if (nMes == 13){ nMes = 1; nAno += 1; } } return makeDateFormat(nDia, nMes, nAno); }  function decDate(sFec0){ var nDia = parseInt(sFec0.substr(0, 2), 10); var nMes = parseInt(sFec0.substr(3, 2), 10); var nAno = parseInt(sFec0.substr(6, 4), 10); nDia -= 1; if (nDia == 0){ nMes -= 1; if (nMes == 0){ nMes = 12; nAno -= 1; } nDia = lastDayOfMonth(nMes, nAno); } return makeDateFormat(nDia, nMes, nAno); }  function addToDate(sFec0, nInc){ var nIncAbs = Math.abs(nInc); var sRes = sFec0; if (nInc >= 0)

Page 46: Preguntas Frecuentes

for (var i = 0; i < nIncAbs; i++) sRes = incDate(sRes); else for (var i = 0; i < nIncAbs; i++) sRes = decDate(sRes); return sRes; }  // Funciones individuales de cada método de selección  // Esta semana completa (Lun -> Dom) function setDefaults1(oFrom, oTo){ var dToday = new Date(); var nDay = dToday.getDate(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var nDOW = dToday.getDay(); var sFirstDate, sLastDate;  if (nDOW == 0) nDOW = 7; sFirstDate = addToDate(makeDateFormat(nDay, nMonth, nYear), -1 * (nDOW - 1)); sLastDate = addToDate(sFirstDate, 6); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // Lo que va de esta semana (Lun -> Hoy) function setDefaults2(oFrom, oTo){ var dToday = new Date(); var nDay = dToday.getDate(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var nDOW = dToday.getDay(); var sFirstDate, sLastDate;  if (nDOW == 0) nDOW = 7; sLastDate = makeDateFormat(nDay, nMonth, nYear); sFirstDate = addToDate(sLastDate, -1 * (nDOW - 1)); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // La semana pasada (Lun -> Dom) function setDefaults3(oFrom, oTo){ var dToday = new Date(); var nDay = dToday.getDate(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var nDOW = dToday.getDay(); var sFirstDate, sLastDate;  if (nDOW == 0) nDOW = 7;

Page 47: Preguntas Frecuentes

sLastDate = addToDate(makeDateFormat(nDay, nMonth, nYear), -1 * nDOW); sFirstDate = addToDate(sLastDate, -6); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // Los últimos siete días function setDefaults4(oFrom, oTo){ var dToday = new Date(); var nDay = dToday.getDate(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var sFirstDate, sLastDate;  sLastDate = makeDateFormat(nDay, nMonth, nYear); sFirstDate = addToDate(sLastDate, -6); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // Este mes completo function setDefaults5(oFrom, oTo){ var dToday = new Date(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var sFirstDate, sLastDate;  sFirstDate = makeDateFormat(1, nMonth, nYear); sLastDate = makeDateFormat(lastDayOfMonth(nMonth, nYear), nMonth, nYear); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // Lo que va de este mes function setDefaults6(oFrom, oTo){ var dToday = new Date(); var nDay = dToday.getDate(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var sFirstDate, sLastDate;  sFirstDate = makeDateFormat(1, nMonth, nYear); sLastDate = makeDateFormat(nDay, nMonth, nYear); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // El mes pasado function setDefaults7(oFrom, oTo){

Page 48: Preguntas Frecuentes

var dToday = new Date(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var sFirstDate, sLastDate;  nYear = prevMonth_Year(nMonth, nYear); nMonth = prevMonth(nMonth); sFirstDate = makeDateFormat(1, nMonth, nYear); sLastDate = makeDateFormat(lastDayOfMonth(nMonth, nYear), nMonth, nYear); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // Los últimos treinta días function setDefaults8(oFrom, oTo){ var dToday = new Date(); var nDay = dToday.getDate(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var sFirstDate, sLastDate;  sLastDate = makeDateFormat(nDay, nMonth, nYear); sFirstDate = addToDate(sLastDate, -29); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // Este año completo function setDefaults9(oFrom, oTo){ var dToday = new Date(); var nYear = dToday.getYear(); var sFirstDate, sLastDate;  sFirstDate = makeDateFormat(1, 1, nYear); sLastDate = makeDateFormat(31, 12, nYear); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // Lo que va de este año function setDefaults10(oFrom, oTo){ var dToday = new Date(); var nDay = dToday.getDate(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var sFirstDate, sLastDate;  sFirstDate = makeDateFormat(1, 1, nYear); sLastDate = makeDateFormat(nDay, nMonth, nYear); oFrom.value = sFirstDate;

Page 49: Preguntas Frecuentes

oTo.value = sLastDate; }  // El año pasado function setDefaults11(oFrom, oTo){ var dToday = new Date(); var nYear = dToday.getYear(); var sFirstDate, sLastDate;  sFirstDate = makeDateFormat(1, 1, nYear - 1); sLastDate = makeDateFormat(31, 12, nYear - 1); oFrom.value = sFirstDate; oTo.value = sLastDate; }  // Los últimos 365 días function setDefaults12(oFrom, oTo){ var dToday = new Date(); var nDay = dToday.getDate(); var nMonth = dToday.getMonth() + 1; var nYear = dToday.getYear(); var sFirstDate, sLastDate;  sLastDate = makeDateFormat(nDay, nMonth, nYear); sFirstDate = addToDate(sLastDate, -364); oFrom.value = sFirstDate; oTo.value = sLastDate; }  function setDefaults(oFrom, oTo, nMeth){ switch (nMeth){ case 0: alert(""); break; case 1: setDefaults1(oFrom, oTo); break; case 2: setDefaults2(oFrom, oTo); break; case 3: setDefaults3(oFrom, oTo); break; case 4: setDefaults4(oFrom, oTo); break; case 5: setDefaults5(oFrom, oTo) break; case 6: setDefaults6(oFrom, oTo)

Page 50: Preguntas Frecuentes

break; case 7: setDefaults7(oFrom, oTo) break; case 8: setDefaults8(oFrom, oTo) break; case 9: setDefaults9(oFrom, oTo) break; case 10: setDefaults10(oFrom, oTo) break; case 11: setDefaults11(oFrom, oTo) break; case 12: setDefaults12(oFrom, oTo) break; } }  </script> </head> <body> <form name="formulario"> <table border="0"> <tr> <td colspan="2" style="font-family: helvetica; text-align: center; font-size: 12; font-weight: bold"> VALORES DE INICIO DE UN RANGO DE FECHAS </td> </tr> <tr height="50"> <td align="right"> Tipo de rango: </td> <td> <select name="sel" onchange="setDefaults(document.formulario.fecha_desde, document.formulario.fecha_hasta, this.selectedIndex)"> <option>...seleccione</option> <option>Esta semana completa</option> <option>Lo que va de esta semana</option> <option>La semana pasada</option> <option>Los últimos siete días</option> <option>Este mes completo</option> <option>Lo que va de este mes</option> <option>El mes pasado</option> <option>Los últimos treinta días</option> <option>Este año completo</option>

Page 51: Preguntas Frecuentes

<option>Lo que va de este año</option> <option>El año pasado</option> <option>Los últimos 365 días</option> </select> </td> </tr> <tr> <td align="right"> Desde (dd/mm/yyyy): </td> <td> <input type="text" name="fecha_desde"> </td> </tr> <tr> <td> Hasta (dd/mm/yyyy): </td> <td> <input type="text" name="fecha_hasta"> </td> </tr> </table> </form> </body></html>

Javascript: Selector de año, mes y día(Redirigido desde Selector de año, mes y día)

P: ¿Como puedo hacer un selector de fecha basado en tags <select> que considere permita

seleccionar cualquier fecha válida hasta el día de hoy?

<html> <head> <script language="JavaScript">  var aMeses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")  function padNmb(nStr, nLen, sChr){ var sRes = String(nStr); for (var i = 0; i < nLen - String(nStr).length; i++) sRes = sChr + sRes; return sRes; }

Page 52: Preguntas Frecuentes

  function makeDateFormat(nDay, nMonth, nYear){ var sRes; sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0"); return sRes; }  function addOpt(oCntrl, iPos, sTxt, sVal){ var selOpcion = new Option(sTxt, sVal); oCntrl.options.add(selOpcion, iPos); }  function lastDayOfMonth(nMonth, nYear){ var aMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); if ((nMonth == 2) && (nYear % 4 == 0)) return 29; else return aMonth[nMonth - 1]; }  function cambia(nCambiado){ var nAno; var nMes; with (document.frm){ nAno = parseInt(ano.options[ano.selectedIndex].value); switch (nCambiado){ case 0: llenaMes(mes, nAno); break; case 1: nMes = parseInt(mes.options[mes.selectedIndex].value); llenaDia(dia, nAno, nMes) break; case 2: nMes = parseInt(mes.options[mes.selectedIndex].value); nDia = parseInt(dia.options[dia.selectedIndex].value); res.value = makeDateFormat(nDia, nMes + 1, nAno); break; } } }  function llenaAno(oAno){ var hoy = new Date(); var ini = 1960; addOpt(oAno, 0, "", ""); for (var i = ini; i <= hoy.getYear(); i++) addOpt(oAno, i - ini + 1, String(i), String(i)); }

Page 53: Preguntas Frecuentes

  function llenaMes(oMes, nAno){ var hoy = new Date(); var nFin = 11; while (oMes.length > 0) oMes.remove(0); if (nAno == hoy.getYear()) nFin = hoy.getMonth(); addOpt(oMes, 0, "", ""); for (var i = 0; i <= nFin; i++) addOpt(oMes, i + 1, aMeses[i], String(i)); }  function llenaDia(oDia, nAno, nMes){ var hoy = new Date(); var nFin = lastDayOfMonth(nMes + 1, nAno); while (oDia.length > 0) oDia.remove(0); if (nAno == hoy.getYear() && nMes == hoy.getMonth()) nFin = hoy.getDate(); addOpt(oDia, 0, "", ""); for (var i = 1; i <= nFin; i++) addOpt(oDia, i + 1, String(i), String(i)); }  </script> </head> <body onload=" llenaAno(document.frm.ano)"> <form name="frm"> <table border="0"> <tr> <td align="right"> Año: </td> <td> <select name="ano" onchange="cambia(0)" style="width: 80"> </select> </td> </tr> <tr> <td align="right"> Mes: </td> <td> <select name="mes" onchange="cambia(1)" style="width: 80"> </select> </td> </tr> <tr> <td align="right"> Día: </td> <td> <select name="dia" onchange="cambia(2)" style="width: 80">

Page 54: Preguntas Frecuentes

</select> </td> </tr> <tr> <td align="right"> Fecha: </td> <td> <input type="text" name="res" disabled> </td> </tr> </table> </form> </body></html>

Javascript: Reloj analógico(Redirigido desde Reloj analógico)

P.- Cómo poner un reloj analógico en mi web.

R.- En realidad este post es un ejemplo de como manejar grados con JS. Para ello he hecho

este relojillo en el que es la hora, son los segundos y los minutos.

<html><head><title>Reloj analogico</title><script>//Script original de KarlanKas para Forosdelweb.com  var codigo="";var incremento=-1var radio=110var radio2=100radianes=(2*3.141592/360) function crear(nombr,radi,hor,destin){this.nombre=nombr;this.radio=radi;this.hora=hor;this.destino=destin;} manecillas=new Array();manecillas[0]=new crea

Page 55: Preguntas Frecuentes

r("segundero",1,"segundo","http://www.forosdelweb.com/images/smilies/dedosabajo.gif");manecillas[1]=new crear("minutero",0.8,"minuto","http://www.forosdelweb.com/images/smilies/dedosarriba.gif");manecillas[2]=new crear("horero",0.5,"hora","http://www.forosdelweb.com/images/smilies/wink.gif"); // -------------- DIBUJAR MANECILLAS ---------------------------for(numeroIconos=0;numeroIconos<5;numeroIconos++){for(cadaManecilla=0;cadaManecilla<3;cadaManecilla++){codigo+='<img id="'+manecillas[cadaManecilla].nombre+numeroIconos+'" style="z-index:2;position:absolute;top:-300px;" src="'+manecillas[cadaManecilla].destino+'">\n'}}//----------- PONER EL CENTRO DE LA ESFERA--------------------------------- codigo+='<img style="z-index:4;position:absolute;top:110px;left:110px;" src="http://www.forosdelweb.com/images/smilies/smile.gif">' //------------- DIBUJAR ESFERA --------------------------for(numero=0;numero<=359;numero+=30){x=Math.floor((radio2)*Math.cos(radianes*numero));y=Math.floor((radio2)*Math.sin(radianes*numero));document.write('<img src="http://www.forosdelweb.com/images/smilies/risa.gif" style="position:absolute;left:'+(radio+x)+'px;top:'+(radio+y)+'px">');} //------------------ MAQUINARIA DEL RELOJ -------------- function reloj(){ //-------------SABER LA HORA----------------ahora=new Date(); document.title=ahora.toLocaleString() segundo=ahora.getSeconds()*6minuto=ahora.getMinutes()*6hora=(ahora.getHours()*30) hora+=(minuto/12) //---------PONER 0 GRAD0S EN 90 GRADOS---------------hora-=90;

Page 56: Preguntas Frecuentes

minuto-=90;segundo-=90 //-------MOVER LAS MANECILLAS--------------- for (a=0;a<99;a=a+20){incremento++for (m=0;m<3;m++){manecilla=document.getElementById(manecillas[m].nombre+incremento);eval("cosa="+manecillas[m].hora);x=a*manecillas[m].radio*Math.cos(radianes*cosa);y=a*manecillas[m].radio*Math.sin(radianes*cosa);manecilla.style.left=x+radio+'px';manecilla.style.top=y+radio+'px'; }}incremento=-1;} </script></head> <body onload='reloj();window.setInterval("reloj()",50)'> <script>document.write(codigo)</script> </body></html>

Javascript: Resta de fechas(Redirigido desde Resta de fechas)

P: ¿Como puedo saber la cantidad de días, meses y años que hay entre dos fechas?

<html> <head> <script language="JavaScript"> function cerosIzq(sVal, nPos){ var sRes = sVal; for (var i = sVal.length; i < nPos; i++) sRes = "0" + sRes; return sRes; }  function armaFecha(nDia, nMes, nAno){ var sRes = cerosIzq(String(nDia), 2);

Page 57: Preguntas Frecuentes

sRes = sRes + "/" + cerosIzq(String(nMes), 2); sRes = sRes + "/" + cerosIzq(String(nAno), 4); return sRes; }  function sumaMes(nDia, nMes, nAno, nSum){ if (nSum >= 0){ for (var i = 0; i < Math.abs(nSum); i++){ if (nMes == 12){ nMes = 1; nAno += 1; } else nMes += 1; } } else { for (var i = 0; i < Math.abs(nSum); i++){ if (nMes == 1){ nMes = 12; nAno -= 1; } else nMes -= 1; } } return armaFecha(nDia, nMes, nAno); }  function esBisiesto(nAno){ var bRes = true; res = bRes && (nAno % 4 == 0); res = bRes && (nAno % 100 != 0); res = bRes || (nAno % 400 == 0); return bRes; }  function finMes(nMes, nAno){ var nRes = 0; switch (nMes){ case 1: nRes = 31; break; case 2: nRes = 28; break; case 3: nRes = 31; break; case 4: nRes = 30; break; case 5: nRes = 31; break; case 6: nRes = 30; break; case 7: nRes = 31; break; case 8: nRes = 31; break; case 9: nRes = 30; break; case 10: nRes = 31; break; case 11: nRes = 30; break; case 12: nRes = 31; break; } return nRes + (((nMes == 2) && esBisiesto(nAno))? 1: 0); } 

Page 58: Preguntas Frecuentes

function diasDelAno(nAno){ var nRes = 365; if (esBisiesto(nAno)) nRes++; return nRes; }  function anosEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){ var nRes = Math.max(0, nAn1 - nAn0 - 1); if (nAn1 != nAn0) if ((nMe1 > nMe0) || ((nMe1 == nMe0) && (nDi1 >= nDi0))) nRes++; return nRes; }  function mesesEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){ var nRes; if ((nMe1 < nMe0) || ((nMe1 == nMe0) && (nDi1 < nDi0))) nMe1 += 12; nRes = Math.max(0, nMe1 - nMe0 - 1); if ((nDi1 > nDi0) && (nMe1 != nMe0)) nRes++; return nRes; }  function diasEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){ var nRes; if (nDi1 < nDi0) nDi1 += finMes(nMe0, nAn0); nRes = Math.max(0, nDi1 - nDi0); return nRes; }  function mayorOIgual(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1){ var bRes = false; bRes = bRes || (nAn1 > nAn0); bRes = bRes || ((nAn1 == nAn0) && (nMe1 > nMe0)); bRes = bRes || ((nAn1 == nAn0) && (nMe1 == nMe0) && (nDi1 >= nDi0)); return bRes; }  function calcula(){ var sFc0 = document.frm.fecha0.value; // Se asume válida var sFc1 = document.frm.fecha1.value; // Se asume válida var nDi0 = parseInt(sFc0.substr(0, 2), 10); var nMe0 = parseInt(sFc0.substr(3, 2), 10); var nAn0 = parseInt(sFc0.substr(6, 4), 10); var nDi1 = parseInt(sFc1.substr(0, 2), 10); var nMe1 = parseInt(sFc1.substr(3, 2), 10); var nAn1 = parseInt(sFc1.substr(6, 4), 10); if (mayorOIgual(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1)){ var nAno = anosEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1); var nMes = mesesEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1);

Page 59: Preguntas Frecuentes

var nDia = diasEntre(nDi0, nMe0, nAn0, nDi1, nMe1, nAn1); var nTtM = nAno * 12 + nMes; var nTtD = nDia; for (var i = nAn0; i < nAn0 + nAno; i++) nTtD += diasDelAno(nAno); for (var j = nMe0; j < nMe0 + nMes; j++) nTtD += finMes(j, nAn1); var nTSS = Math.floor(nTtD / 7); var nTSD = nTtD % 7; document.frm.difDMA.value = String(nAno) + " años, " + String(nMes) + " meses, " + String(nDia) + " días"; document.frm.difDM.value = String(nTtM) + " meses, " + String(nDia) + " días"; document.frm.difD.value = String(nTtD) + " días"; document.frm.difSD.value = String(nTSS) + " semanas, " + String(nTSD) + " días"; } else alert("Error en rango"); } </script> </head> <body> <form name="frm"> <table border="0"> <tr> <td> <table border="1"> <tr> <td align="right"> Fecha inicial (dd/mm/aaaa) </td> <td> <input type="text" name="fecha0" value="31/08/1996"> </td> </tr> <tr> <td align="right"> Fecha final (dd/mm/aaaa) </td> <td> <input type="text" name="fecha1" value="09/07/1999"> </td> </tr> <tr> <td align="right"> Diferencia (D,M,A) </td> <td> <input type="text" name="difDMA" readonly> </td> </tr> <tr> <td align="right">

Page 60: Preguntas Frecuentes

Diferencia (D,M) </td> <td> <input type="text" name="difDM" readonly> </td> </tr> <tr> <td align="right"> Diferencia (D) </td> <td> <input type="text" name="difD" readonly> </td> </tr> <tr> <td align="right"> Diferencia (SD) </td> <td> <input type="text" name="difSD" readonly> </td> </tr> </table> </td> </tr> <tr> <td align="center"> <input type="button" value="Calcular" onclick="calcula()"> </td> </tr> </table> </form> </body></html>

Javascript: Calendario(Redirigido desde Calendario)

P: ¿Como puedo poner un calendario para seleccionar los campos fecha?

<html> <head> <script language="JavaScript">  var dFec = new Date(); var aMonthNames = new Array(

Page 61: Preguntas Frecuentes

"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");  function firstOfMonth(dFec){ var dRes = new Date(); dRes.setYear(dFec.getYear()); dRes.setMonth(dFec.getMonth()); dRes.setDate(1); return dRes; }  function lastDayOfMonth(dFec){ var dRes = new Date(); var nYear = dFec.getYear(); var nMonth = dFec.getMonth() + 1; if (nMonth == 12){ nMonth = 0; nYear++; } dRes.setYear(nYear); dRes.setMonth(nMonth); dRes.setDate(1); return new Date(dRes.valueOf() - (24 * 60 * 60 * 1000)); }  function dayToWrite(nDay){ var dToday = new Date(); var bisThisMonth = ((dFec.getYear() == dToday.getYear()) && (dFec.getMonth() == dToday.getMonth())); var sDay = String(nDay); sDay = (nDay == dFec.getDate() && bisThisMonth? "<b><font color='red'>" + sDay + "</font></b>": sDay); return sDay; }  function selectDay(nDay){ var sRes, sDay, sMon, sYea; sDay = "0" + String(nDay); sDay = sDay.substr(sDay.length - 2, 2); sMon = "0" + String(dFec.getMonth() + 1); sMon = sMon.substr(sMon.length - 2, 2); sYea = String(dFec.getFullYear()); sRes = sDay + "/" + sMon + "/" + sYea; opener.document.forms[0].dateResult.value = sRes; opener.fillDateField(); close(); }  function showCalenContents(){

Page 62: Preguntas Frecuentes

var dFec0 = firstOfMonth(dFec); var nDay = 1; var nLastDay = lastDayOfMonth(dFec).getDate(); var sWeek = ""; var bEnd = false; var bWri = false; var nDOW0 = dFec0.getDay(); for (var j = 0; !bEnd; j++){ sWeek = "<tr>"; for (var i = 0; (i < 7) && !bEnd; i++){ bWri = bWri || (i == nDOW0); if (bWri) sWeek += "<td align='right' style='cursor: hand' onclick='parent.selectDay(" + String(nDay) + ")'>" + dayToWrite(nDay, bWri) + "</td>"; else sWeek += "<td>&nbsp;</td>"; if (bWri) nDay++; bEnd = (nDay > nLastDay); } if (bEnd) for (var k = i; k < 7; k++) sWeek = sWeek + "<td>&nbsp;&nbsp;</td>"; window.usefull.document.writeln(sWeek + "</tr>"); } }  function backMonth(){ var nMonth = dFec.getMonth(); var nYear = dFec.getFullYear(); if (--nMonth == -1){ nMonth = 11; nYear--; } dFec.setMonth(nMonth); dFec.setYear(nYear); calendary(); }  function forthMonth(){ var nMonth = dFec.getMonth(); var nYear = dFec.getFullYear(); if (++nMonth == 12){ nMonth = 0; nYear++; } dFec.setMonth(nMonth); dFec.setYear(nYear); calendary(); } 

Page 63: Preguntas Frecuentes

function backYear(){ var nYear = dFec.getFullYear(); dFec.setYear(--nYear); calendary(); }  function forthYear(){ var nYear = dFec.getFullYear(); dFec.setYear(++nYear); calendary(); }  function showCalen(){ with (window.usefull.document){ write("<table border='0' width='100%' height='100%'><tr><td><table border='0' width='100%'><tr>"); write("<td width='10'><input type='button' name='bckYear' value='<<' onclick='parent.backYear()'></td>"); write("<td width='10'><input type='button' name='bckMonth' value='<' onclick='parent.backMonth()'></td>"); write("<td align='center'><b>" + aMonthNames[dFec.getMonth()].substr(0, 3) + ", " + String(dFec.getYear()) + "</b></td>"); write("<td width='10'><input type='button' name='ForMonth' value='>' onclick='parent.forthMonth()'></td>"); write("<td width='10'><input type='button' name='ForYear' value='>>' onclick='parent.forthYear()'></td>"); write("</tr></table></tr><tr><td>"); write("<table border='0'>"); write("<tr><td><b>Su</b></td><td><b>Mo</b></td><td><b>Tu</b></td><td><b>We</b></td><td><b>Th</b></td><td><b>Fr</b></td><td><b>Sa</b></td></tr>"); showCalenContents(); write("</table></td></tr></table>"); } }  function calendary(){ with (window.usefull.document){ open(); writeln("<html><head></head><body>"); writeln("<form name='frm'>"); showCalen(); writeln("</form></body></html>"); close(); } }  </script>

Page 64: Preguntas Frecuentes

<head> <frameset rows="100%,*" border="0" frameborder="no" framespacing="0" onload="calendary()"> <frame name="usefull" src="DummyPg.htm" frameborder="no" marginheight="0" marginwidth="0" scrolling="no"> <frame name="useless" src="DummyPg.htm" frameborder="no" marginheight="0" marginwidth="0" scrolling="no"> </frameset>

Modo de uso: testCalen.htm

<html> <head> <script language="JavaScript">  var nInput;  function calen(n){ var oWnd; nInput = n; oWnd = open("Calendario.htm", "fechas", "location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no,width=180,height=200"); oWnd.focus(); }  function fillDateField(){ with (document.frm) if (nInput == 1) fechaInicial.value = dateResult.value; else fechaFinal.value = dateResult.value; }  </script> <head> <body> <form name="frm"> <table border="0"> <tr> <td> Desde </td> <td> <input type="text" name="fechaInicial"> <input type="button" value="..." onclick="calen(1)"> </td> </tr> <tr> <td>

Page 65: Preguntas Frecuentes

Hasta </td> <td> <input type="text" name="fechaFinal"> <input type="button" value="..." onclick="calen(2)"> </td> </tr> </table> <input type="hidden" name="dateResult"> </form> <body><html>

Página "dummy": DummyPg.htm

<html> <head> </head> <body> </body></html>

Javascript: Formato de fecha(Redirigido desde Formato de fecha)

P: ¿Cómo puedo mostrar la fecha en formato "28 de Septiembre del 2003"?

<html> <head> <script language="JavaScript"> // función que muestra la fecha en formato Viernes, 26 de Septiembre del 2003 // parámetro una fecha (se asume que es válida)  function showdate(mydate){ var year = mydate.getYear() if (year < 1000) year += 1900 var day = mydate.getDay() var month = mydate.getMonth() var daym = mydate.getDate() if (daym < 10) daym = "" + daym var dayarray = new Array("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado")

Page 66: Preguntas Frecuentes

var montharray = new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre") return dayarray[day] + ", " + daym + " de " + montharray[month] + " del " + year; }  // y la llamada a la función document.write(showdate(new Date())) </script> </head> <body> </body></html>

Javascript: Validar hora(Redirigido desde Validar hora)

P.- Quiero un script que me valide la hora

<script language="javascript" type="text/javascript">// script para validar una hora en formato 24h. Por Carlitos ([email protected])//function valida(str){hora=str.valueif (hora.length!=4) {alert("introducir HHMM");return}a=hora.charAt(0)b=hora.charAt(1)c=hora.charAt(2)if (a>=2 && b>3) {alert("hora mal :(");return}if (c>5) {alert("minutos mal :(");return}alert("hora bien. :)")}</script>Hora (HHMM):<input type="text" name="hhmm" size="4"><input type="button" value="Valida" onclick="valida(hhmm)">

Versión 2. (Modificación de la versión 1 por AnaLezama)

<script language="javascript" type="text/javascript">// Por AnaLezamafunction CheckTime(str){hora=str.value

Page 67: Preguntas Frecuentes

if (hora=='') {return}if (hora.length>8) {alert("Introdujo una cadena mayor a 8 caracteres");return}if (hora.length!=8) {alert("Introducir HH:MM:SS");return}a=hora.charAt(0) //<=2b=hora.charAt(1) //<4c=hora.charAt(2) //:d=hora.charAt(3) //<=5e=hora.charAt(5) //:f=hora.charAt(6) //<=5if ((a==2 && b>3) || (a>2)) {alert("El valor que introdujo en la Hora no corresponde, introduzca un digito entre 00 y 23");return}if (d>5) {alert("El valor que introdujo en los minutos no corresponde, introduzca un digito entre 00 y 59");return}if (f>5) {alert("El valor que introdujo en los segundos no corresponde");return}if (c!=':' || e!=':') {alert("Introduzca el caracter ':' para separar la hora, los minutos y los segundos");return} </script>}<input type=text name=txtHora onBlur="CheckTime(this)" size=12 maxlength=10>

Formularios

Javascript:¿Cómo puedo hacer para que al cambiar la opción seleccionada en un combo, cambien también las opciones disponibles en otro combo?[ver ejemplo]

<html> <head> <title>

Page 68: Preguntas Frecuentes

FAQ-1: Selects </title> <script language="JavaScript">   function addOpt(oCntrl, iPos, sTxt, sVal){ var selOpcion=new Option(sTxt, sVal); eval(oCntrl.options[iPos]=selOpcion); }   function cambia(oCntrl){ while (oCntrl.length) oCntrl.remove(0); switch (document.frm.pais.selectedIndex){ case 0: addOpt(oCntrl, 0, "Ciudad de México", "0"); addOpt(oCntrl, 1, "Monterrey", "1"); addOpt(oCntrl, 2, "Guadalajara", "2"); break; case 1: addOpt(oCntrl, 0, "Madrid", "0"); addOpt(oCntrl, 1, "Barcelona", "1"); addOpt(oCntrl, 2, "San Sebastián", "2"); break; case 2: addOpt(oCntrl, 0, "Caracas", "0"); addOpt(oCntrl, 1, "Coro", "1"); addOpt(oCntrl, 2, "Maracay", "2"); addOpt(oCntrl, 3, "Valencia", "3"); break; } } </script> </head> <body> <script language="JavaScript"> var w = 400; var h = 150; resizeTo(w, h); moveTo((screen.width - w)/ 2, (screen.height - h)/ 2); </script> <form name="frm"> <table border="0"> <tr> <td> País </td> <td> <select name="pais" onchange="cambia(document.frm.ciudad)"> <option value="Mex">México</option> <option value="Esp">España</option> <option value="Ven">Venezuela</option> </select>

Page 69: Preguntas Frecuentes

</td> <td> &nbsp; </td> <td> Ciudad </td> <td> <select name="ciudad"> <option value="0">Ciudad de México</option> <option value="1">Monterrey</option> <option value="2">Guadalajara</option> </select> </td> </tr> </table> </form> </body> </html>

Javascript:¿Cómo puedo conocer el valor del radiobutton seleccionado?Teniendo un grupo de Radios así:

<form id="formulario"> <input type="radio" name="rad" value="1" /> <input type="radio" name="rad" value="2" /> <input type="radio" name="rad" value="3" /> <input type="radio" name="rad" value="4" /> <input type="radio" name="rad" value="5" /></form>

Se puede conocer el valor de la opción seleccionada recorriendo el grupo con un bucle for:

function radiovalue(radios) { for (i = 0; radio = radios[i]; i++) { if (radio.checked) { return radio.value; } }}

Para el HTML de ejemplo descrito más arriba la llamada a la función se haría así:

Page 70: Preguntas Frecuentes

var grupo = document.getElementById("formulario").rad;alert(radiovalue(grupo));

Javascript:¿Cómo puedo deshabilitar un elemento a partir del valor de otro?[ver ejemplo]

<html> <head> </head> <body> <form name="frm"> Seleccione: <select name="sel"> <option value="1">Uno</option> <option value="2">Dos</option> <option value="3">Tres</option> </select><br> <input type="checkbox" name="chk" checked="checked" onclick="document.frm.sel.disabled = !this.checked">Habilitar selección </form> </body> </html>

Javascript:¿Cómo puedo contar el número de caracteres escritos en un área de texto de un formulario?[ver ejemplo]

<html> <head> <script language="JavaScript">   var primeraVez = true;   function limpia(){ if (primeraVez){ document.formulario.mensaje.value = ""; primeraVez = false; }

Page 71: Preguntas Frecuentes

}   function cuenta(){ document.formulario.total.value = document.formulario.mensaje.value.length; }   </script> </head> <body> <form name="formulario"> <textarea name="mensaje" onfocus="limpia()" onKeyUp="cuenta()" rows="10" cols="50"> </textarea> <input type="text" name="total" size="5" maxlength="3" disabled> Caracteres </form> </body> </html>

Javascript:¿Cómo puedo validar que varios campos de texto no estén vacíos?[ver ejemplo]

<html> <head> <script language="JavaScript"> function noVacio() { var i; var n = parseInt(document.frm.cantidad.value); var bError = false;   for (i = 0; i < n; i++){ bError = bError || (eval("document.frm.elemento" + i + ".value == ''")); if (bError){ alert("Campo inválido"); eval("document.frm.elemento" + i + ".focus()"); break; } } if (!bError) alert("Ok"); }  

Page 72: Preguntas Frecuentes

</script> </head> <body> <form name="frm"> <input type="text" name="elemento0"><br> <input type="text" name="elemento1"><br> <input type="text" name="elemento2"><br> <input type="hidden" name="cantidad" value="3"> <input type="button" name="enviar" value="enviar" onclick="noVacio()"> </form> </body> </html>

Javascript:¿Cómo puedo comprobar si un checkbox está seleccionado?[ver ejemplo] Si tenemos un único checkbox, podemos hacer de la siguiente manera:

<html> <head> <script language="JavaScript"> function estado(){ if (document.frm.chk.checked) alert("Marcado"); else alert("Desmarcado"); } </script> </head> <body> <form name="frm" onClick="estado()"> <input type="checkbox" name="chk">Selector<br> </form> </body> </html>

Si queremos validar que por lo menos un checkbox esté marcado dentro de un grupo, podemos

hacerlo de esta manera:

function checkvalidate(checks) { for (i = 0; lcheck = checks[i]; i++) { if (lcheck.checked) { return true; } }

Page 73: Preguntas Frecuentes

return false;}

Por ejemplo, si tuviéramos un formulario como el siguiente:

<form id="formulario"> <input type="radio" name="chk" value="1" /> <input type="radio" name="chk" value="2" /> <input type="radio" name="chk" value="3" /> <input type="radio" name="chk" value="4" /> <input type="radio" name="chk" value="5" /></form>

La llamada a la función sería:

var grupo = document.getElementById("formulario").chk;if (checkvalidate(grupo)) { alert("Por lo menos uno de los checkbox está marcado");} else { alert("Ninguno de los checkbox está marcado");}

Javascript:¿Cómo comprobar si todos los radios buttons de un formulario han sido respondidos?var el = document.(tu formulario).elements; for (var i = 0 ; i < el.length ; ++i) { if (el[i].type == "radio") { var radiogroup = el[el[i].name]; var itemchecked = false; for (var j = 0 ; j < radiogroup.length ; ++j) { if (radiogroup[j].checked) { itemchecked = true; break; } } if (!itemchecked) { i=0; break; } } } if (i>0) {

Page 74: Preguntas Frecuentes

return true; } else { alert("No ha respondido todas las preguntas"); return false; }

Javascript:¿Cómo puedo habilitar o deshabilitar un campo de texto según la opción seleccionada en un radiobutton?[ver ejemplo]

<html> <head> <script language="JavaScript">   function habilita(){ document.frm.txt.disabled = false; }   function deshabilita(){ document.frm.txt.disabled = true; document.frm.txt.value = ""; }   </script> </head> <body> <form name='frm'> <b>Sexo:</b><br> <input type="radio" name="rad" value="M" onclick="deshabilita()"> Masculino<br> <input type="radio" name="rad" value="F" onclick="deshabilita()"> Femenino<br> <input type="radio" name="rad" value="O" onclick="habilita()"> Otro (Indique cual: <input type='text' name='txt' disabled>) </form> </body> </html>

Page 75: Preguntas Frecuentes

Javascript:¿Cómo puedo presentar una vista preliminar de los datos de mi formulario para que desde ella el usuario envíe o cancele el envío de dicho formulario?[ver ejemplo]

<html> <head> <script language="JavaScript">   function enviar(){ //document.frm2.submit(); alert("Documento enviado"); history.back(); }   function regresar(){ //document.frm2.submit(); history.back(); }   function confirma(){ var sNmb; sNmb = document.frm.nmb.value; sApe = document.frm.ape.value; sPrf = document.frm.prf.value; with (document){ open(); write("<html><head>"); write(" </head><body><form name='frm2'>"); write(" <table border='0'>"); write(" <tr>"); write(" <td>"); write(" Nombre:"); write(" </td>"); write(" <td width='50' align='right'>"); write(sNmb); write(" </td>"); write(" </tr>"); write(" <tr>"); write(" <td>"); write(" Apellido:"); write(" </td>"); write(" <td align='right'>"); write(sApe); write(" </td>");

Page 76: Preguntas Frecuentes

write(" </tr>"); write(" <tr>"); write(" <td>"); write(" Profesión:"); write(" </td>"); write(" <td align='right'>"); write(sPrf); write(" </td>"); write(" </tr>"); write(" <tr>"); write(" <td colspan='2' align='center'>"); write(" <input type='submit' onclick='JavaScript:alert(" + '"' + "Documento enviado" + '"' + ");history.back()' value='Enviar estos valores'>"); write(" <input type='button' onclick='JavaScript:history.back()' value='Volver sin enviar'>"); write(" </td>"); write(" </tr>"); write(" </table>"); write("</form></body></html>"); close(); } }   </script> </head> <body> <form name="frm"> <table border="1"> <tr> <td> Nombre: </td> <td> <input type="text" name="nmb"> </td> </tr> <tr> <td> Apellido: </td> <td> <input type="text" name="ape"> </td> </tr> <tr> <td> Profesión: </td> <td> <input type="text" name="prf">

Page 77: Preguntas Frecuentes

</td> </tr> <tr> <td colspan="2" align="center"> <input type="button" onclick="confirma()" value="Enviar"> </td> </tr> </table> </form> </body> </html>

Javascript:¿Cómo puedo mostrar un texto(pregunta) tras seleccionar un radio button?<html> <head> <script> function Pregunta1(){ document.getElementById('pregunta').innerHTML = "¿Cuál es la pregunta 1?<br>" document.form.texto.value = "Respuesta 1"} function Pregunta2(){ document.getElementById('pregunta').innerHTML = "¿Cuál es la pregunta 2?<br>" document.form.texto.value = "Respuesta 2"} function Pregunta3(){ document.getElementById('pregunta').innerHTML = "¿Cuál es la pregunta 3?<br>" document.form.texto.value = "Respuesta 3"} function Pregunta4(){ document.getElementById('pregunta').innerHTML = "¿Cuál es la pregunta 4?<br>" document.form.texto.value = "Respuesta 4"} </script> </head> <body> <form name=form> <input type="radio" name="Radio" value="Uno" Onfocus="Pregunta1()">Uno<br> <input type="radio" name="Radio" value="Dos" Onfocus="Pregunta2()">Dos<br> <input type="radio" name="Radio" value="Tres" Onfocus="Pregunta3()">Tres<br>

Page 78: Preguntas Frecuentes

<input type="radio" name="Radio" value="cuatro" Onfocus="Pregunta4()">Cuatro<br> <table border=0 cellpadding=0 cellspacing=0 width="100%" style="border-collapse: collapse" bordercolor="#111111"> <tr> <td id="pregunta">Seleccione una Opción</td> </tr> <tr> <td><input type="text" name="texto"></td> </tr> </table> </form> </body> </html>

Javascript:Textbox con botones para formato (tipo ForosDelWeb)[ver ejemplo]

El siguiente script es un extracto del usado en los ForosDelWeb, en su versión anterior.

Créditos: Tukzone, SirMatrix y UnKnown.

NOTAS: Se debe reemplazar "java script" por "JavaScript" para que funcione.

Se ha reportado que no funciona correctamente en NetScape 4.

<HTML> <HEAD> </HEAD> <BODY> <SCRIPT language="Javascript" type="text/javascript">   // Este genial Script fue desarrollado por Tukzone, SirMatrix y Unknow, // todos usuarios del Foro.. Gracias a ellos por su colaboración   function storeCaret(text) { if (text.createTextRange) { text.caretPos = document.selection.createRange().duplicate(); } }   function meter(text) { var postopic = document.PostTopic.Message; if (postopic.createTextRange && postopic.caretPos) { var caretPos = postopic.caretPos;

Page 79: Preguntas Frecuentes

caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?  text + ' ' : text; } else postopic.value += text; postopic.focus(caretPos) }   function codigo(accion) { switch(accion) { case "url": url = prompt("URL de el Enlace", "http://"); if(url) { url="[ a]"+url+"[ /a]"; meter(url); } break; case "bold": negras = prompt("Texto en Negritas", ""); if(negras) { negras="[ b]"+negras+"[ /b]"; meter(negras); } break; case "italics": italics = prompt("Texto en Italicas", ""); if(italics) { italics="[ i]"+italics+"[ /i]"; meter(italics); } break; case "code": code="[ code] [ /code]"; meter(code); break; case "quote": quote="[ quote] [ /quote]"; meter(quote); break; default: meter(accion); break; } }   function textCounter(field, countfield, maxlimit) { if (field.value.length > maxlimit) field.value = field.value.substring(0, maxlimit); else countfield.value = maxlimit - field.value.length;

Page 80: Preguntas Frecuentes

} </script> <form name="PostTopic"> Nombre de usuario: <INPUT TYPE="text" NAME="UserName" SIZE="12" MAXLENGTH="25"  VALUE='Kaopectate'> Password: <input maxLength="13" name="Password" size="12" type="password"  VALUE='**********'> Mensaje: <textarea  onKeyDown="textCounter(this.form.Message,this.form.remLen,2000);"  onKeyUp="javascript:storeCaret(this);  textCounter(this.form.Message,this.form.remLen,2000);" name="Message"  onchange="javascript:storeCaret(this);"  onclick="javascript:storeCaret(this);" rows="10" wrap="VIRTUAL" cols="45"> </textarea> <a href="javascript:codigo('url')">Enlace</a> <a href="javascript:codigo('bold')">negrita</a> <a href="javascript:codigo('italics')">italica</a> <a href="javascript:codigo('code')">codigo</a> <a href="javascript:codigo('quote')">citar</a> Tiene <input readonly type=text name=remLen size=5 maxlength=3 value="2000"> caracteres para su mensaje. </form> </BODY> </HTML>

Javascript:¿Cómo valido que el email colocado por el usuario tenga el simbolo de "@" ?[ver ejemplo]

<HTML> <HEAD>

Page 81: Preguntas Frecuentes

<TITLE></TITLE> <SCRIPT LANGUAGE="JavaScript"> function validar_email() { if (document.formu.EMAIL.value.indexOf('@') == -1) alert ("Debes colocar una \"Dirección de Email\" válida"); document.formu.EMAIL.focus() //Esto recorna el cursor al campo "Email" else { document.formu.submit(); } } </SCRIPT> </HEAD>  <BODY> <FORM NAME="formu" METHOD="POST" ACTION="Tu.Accion"> Ingresa tu Email: <INPUT NAME="EMAIL" TYPE="text"><BR> <INPUT type="button" name="ENVIAR" value="Agregar" onClick="JavaScrpit:validar_email();"> </FORM>

Javascript:¿Cómo se puede impedir que se ingrese un dato no numérico?function LP_data(evt){

var key = evt.which || event.keyCode; // Código de tecla. if ((key < 48 || key > 57) && key != 8){ // Si no es número o

retrocesoif (evt.preventDefault) {

evt.preventDefault();} else {

event.returnValue = false;}

}}<input type="text" name="numero" onkeypress="LP_data(event);" />

Javascript:¿Cómo puedo preasignar el valor de un botón de radio?[ver ejemplo]

<html> <head> <script language="JavaScript">

Page 82: Preguntas Frecuentes

function Sel(n){ document.frm.rad[n - 1].checked = true; } </script> </head> <body> <form name="frm"> <input type="radio" name="rad" value="1">Uno<br> <input type="radio" name="rad" value="2">Dos<br> <input type="button" name="uno" value="Uno" onclick="Sel(1)"> <input type="button" name="dos" value="Dos" onclick="Sel(2)"> </form> </body> </html>

Javascript:¿Cómo substituir los botones de un formulario por imágenes?[Ejemplo]

<FORM name="frm" method="post" ACTION="javascript:alert('Este formulario no hace nada')"><INPUT type="text" name="campo1"><INPUT type="text" name="campo2"><A href="javascript:document.frm.submit();"><IMG src="imagen_submit.gif" border="0"></A> <A href="javascript:document.frm.reset();"><IMG src="imagen_reset.gif" border="0"></A></FORM>

También, es posible hacerlo sólo con HTML para evitar problemas en caso de que Javascript

esté desactivado:

<form name="frm" method="post" action=""> <fieldset> <input type="text" name="campo1" /> <input type="text" name="campo2" /> <button type="submit" style="border: 0;"><img src="imagen_submit.gif" alt="Enviar" /></button> <button type="reset" style="border: 0;"><img src="imagen_reset.gif" alt="Limpiar" /></button> </fieldset></form>

Page 83: Preguntas Frecuentes

Javascript:¿Cómo puedo presentar un número entero usando separadores de miles?[ver ejemplo]

<html> <head> <script language="JavaScript"> function formatNmb(nNmb){ var sRes = ""; for (var j, i = nNmb.length - 1, j = 0; i >= 0; i--, j++) sRes = nNmb.charAt(i) + ((j > 0) && (j % 3 == 0)? ".": "") + sRes; return sRes; } </script> </head> <body> <table border="1"> <script language="JavaScript"> document.writeln("<tr><td>" + 13528 + "</td><td>" + formatNmb( "13528") + "</td></tr>"); document.writeln("<tr><td>" + 412 + "</td><td>" + formatNmb( "412") + "</td></tr>"); document.writeln("<tr><td>" + 1378528 + "</td><td>" + formatNmb( "1378528") + "</td></tr>"); document.writeln("<tr><td>" + 213528 + "</td><td>" + formatNmb( "213528") + "</td></tr>"); document.writeln("<tr><td>" + 1234567890 + "</td><td>" + formatNmb("1234567890") + "</td></tr>"); </script> </table> </body> </html>

Javascript:¿Cómo puedo validar que una dirección de correo sea consistente?[ver ejemplo]

<html> <head> <script language="JavaScript">

Page 84: Preguntas Frecuentes

function Validar(form){ var pos1, pos2, bOk = true; var sDir = document.frm.dir.value; if (sDir == ""){ alert("Por favor ingrese su dirección de correo"); document.frm.dir.focus(); return false; } pos1 = sDir.indexOf('@', 0); pos2 = sDir.indexOf('.', 0); bOk = bOk && (pos1 > 0); bOk = bOk && (pos2 != -1); bOk = bOk && (pos1 < pos2 - 1); bOk = bOk && (pos2 < sDir.length - 1); if (!bOk){ alert("Dirección de correo inválida"); document.frm.dir.focus(); return false; } } </script> </head> <body> <form name="frm" method="post" action="" onSubmit="return Validar(this);"> Dirección de correo: <input type="text" name="dir"> <input type="submit"> </form> </body> </html>

Javascript:¿Cómo puedo contar el número de palabras dentro de un textarea?[ver ejemplo]

<html> <head> <script language="JavaScript"> function calcula(){ var sTxt = document.frm.txt.value; var sTx2 = ""; var sSep = document.frm.sep.value; var iRes = 0;

Page 85: Preguntas Frecuentes

var bPalabra = false; for (var j = 0; j < sTxt.length; j++){ if (sSep.indexOf(sTxt.charAt(j)) != -1){ if (bPalabra) sTx2 += " "; bPalabra = false; } else { bPalabra = true; sTx2 += sTxt.charAt(j); } } if (sTx2.charAt(sTx2.length - 1) != " ") sTx2 += " "; for (var j = 0; j < sTx2.length; j++) if (sTx2.charAt(j) == " ") iRes++; if (sTx2.length == 1) iRes = 0; alert("Número de palabras: " + String(iRes)); } </script> </head> <body> <form name="frm"> Texto:<br> <textarea name="txt" rows="5" cols="80"></textarea><br><br> Separadores: <input type="text" name="sep" value=" ,.;:"><br><br> <input type="button" name="btn" value="Calcular" onclick="calcula()"> </form> </body> </html>

Javascript:¿Cómo puedo redireccionar lo escrito en un elemento HTML hacia otro elemento?[ver ejemplo]

<html> <head> <script language="JavaScript"> function redirecciona(){ if (oTrap.checked){ oOutput.innerText += "[trap = " + event.keyCode + "]"; event.returnValue = false; } else oOutput.innerText += String.fromCharCode(event.keyCode); } </script>

Page 86: Preguntas Frecuentes

</head> <body> <table border="0"> <tr> <td> Texto:<input id="oExample" type="text" onkeydown="redirecciona()"> </td> <td> <input type="checkbox" id="oTrap"> Modo debug </td> </tr> <tr> <td colspan="2"> <textarea id="oOutput" rows="10" cols="50"></textarea> </td> </tr> </table> </body> </html>

Javascript:¿Cómo puedo filtrar los elementos que conforman un select de acuerdo a lo tipeado en un área de texto?[ver ejemplo]

<html> <head> <script language="JavaScript">   var i;   function addOpt(oCntrl, sTxt, sVal, sCnd){ if (sTxt.substr(0, sCnd.length).toUpperCase() == sCnd.toUpperCase()){ var selOpcion=new Option(sTxt, sVal); eval(oCntrl.options[i++]=selOpcion); } }   function cambia(oCntrl){ var txtVal = document.frm.txt.value; while(oCntrl.length > 0) oCntrl.options[0]=null; i = 0;

Page 87: Preguntas Frecuentes

oCntrl.clear; addOpt(oCntrl, "Ciudad de México", "0", txtVal); addOpt(oCntrl, "Ciudad de Panamá", "0", txtVal); addOpt(oCntrl, "Ciudad de Guatemala", "0", txtVal); addOpt(oCntrl, "Caracas", "0", txtVal); addOpt(oCntrl, "Cancún", "0", txtVal); addOpt(oCntrl, "Maracay", "0", txtVal); addOpt(oCntrl, "Maracaibo", "0", txtVal); addOpt(oCntrl, "Zaragoza", "0", txtVal); } </script> </head> <body onload="cambia(document.frm.ciudad)"> <form name="frm"> <table border="0"> <tr> <td> Ciudad: </td> <td> <input type="text" name="txt" onkeyup="cambia(document.frm.ciudad)"> </td> <td> <select name="ciudad"> </select> </td> </tr> </table> </form> </body> </html>

Javascript:¿Cómo puedo hacer una interfase con la que pueda llenar una lista en base a los elementos de otra lista?[ver ejemplo]

<html> <head> <script language="javascript"> var aList = new Array("uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez");

Page 88: Preguntas Frecuentes

var aIzqu = new Array(true, true, true, true, true, true, true, true, true, true); var i, j, nIzq, nDer, maxIzq, maxDer;   nIzq = 0; nDer = 0; maxIzq = aList.length; maxDer = 0;   function agregaTodos(){ for (i = 0; i < aList.length; i++) aIzqu[i] = false; maxIzq = 0; maxDer = aList.length; nIzq = 0; formulario(); }   function indiceIzqReal(nInd){ var bFin = false; var i = 0; var j = -1; for (;!bFin;){ if (aIzqu[i]) j++; bFin = ((j == nInd) || (i >= aList.length)); if (!bFin) i++; } return i; }   function indiceDerReal(nInd){ var bFin = false; var i = 0; var j = -1; for (;!bFin;){ if (!aIzqu[i]) j++; bFin = ((j == nInd) || (i >= aList.length)); if (!bFin) i++; } return i; }   function agregaActual(){ var bFin = false; var nInd = indiceIzqReal(nIzq); aIzqu[nInd] = false; if (nIzq == maxIzq - 1) nIzq--; maxIzq--; maxDer++; formulario(); }

Page 89: Preguntas Frecuentes

  function eliminaActual(){ var bFin = false; var nInd = indiceDerReal(nDer); aIzqu[nInd] = true; if (nDer == maxDer - 1) nDer--; maxIzq++; maxDer--; formulario(); }   function eliminaTodos(){ for (i = 0; i < aList.length; i++) aIzqu[i] = true; maxIzq = aList.length; maxDer = 0; nDer = 0; formulario(); }   function primeroIzq(){ nIzq = 0; formulario(); }   function primeroDer(){ nDer = 0; formulario(); }   function siguienteIzq(){ if (nIzq < maxIzq - 1) nIzq++; formulario(); }   function siguienteDer(){ if (nDer < maxDer - 1) nDer++; formulario(); }   function anteriorIzq(){ if (nIzq > 0) nIzq--; formulario(); }   function anteriorDer(){ if (nDer > 0) nDer--;

Page 90: Preguntas Frecuentes

formulario(); }   function ultimoIzq(){ nIzq = maxIzq - 1; formulario(); }   function ultimoDer(){ nDer = maxDer - 1; formulario(); }   function formulario(){ with (window.pantalla.document){ open(); writeln("<html>"); writeln(" <head>"); writeln(" </head>"); writeln(" <body>"); writeln(" <form name='formulario'>"); writeln(" <table border='0'>"); writeln(" <tr>"); writeln(" <td>"); writeln(" <textarea name='opciones' rows='10'>"); for (i = 0, j = 0; i < aList.length; i++){ if (aIzqu[i]){ if (j == nIzq) writeln('>>' + aList[i] + '<<') else writeln(aList[i]); j++; } } writeln(" </textarea>"); writeln(" </td>"); writeln(" <td>"); writeln(" <table border='0'>"); writeln(" <tr>"); writeln(" <td>"); writeln(" <input type='button' value='>>' onclick='parent.agregaTodos()'>");   writeln(" </td>"); writeln(" </tr>"); writeln(" <tr>"); writeln(" <td>"); writeln(" <input type='button' value='> ' onclick='parent.agregaActual()'>");   writeln(" </td>");

Page 91: Preguntas Frecuentes

writeln(" </tr>"); writeln(" <tr>"); writeln(" <td>"); writeln(" <input type='button' value=' <' onclick='parent.eliminaActual()'>");   writeln(" </td>"); writeln(" </tr>"); writeln(" <tr>"); writeln(" <td>"); writeln(" <input type='button' value='<<' onclick='parent.eliminaTodos()'>");   writeln(" </td>"); writeln(" </tr>"); writeln(" </table>"); writeln(" </td>"); writeln(" <td>");   writeln(" <textarea name='seleccionados' rows='10'>"); for (i = 0, j = 0; i < aList.length; i++){ if (!aIzqu[i]){ if (j == nDer) writeln('>>' + aList[i] + '<<') else writeln(aList[i]); j++; } } writeln(" </textarea>");   writeln(" </td>"); writeln(" </tr>"); writeln(" <tr>"); writeln(" </tr>"); writeln(" <td>"); writeln(" <table border='0'>"); writeln(" <tr>"); writeln(" <td>"); writeln(" <input type='button' value='Pri' onclick='parent.primeroIzq()'>"); writeln(" </td>"); writeln(" <td>"); writeln(" <input type='button' value='Ant' onclick='parent.anteriorIzq()'>"); writeln(" </td>"); writeln(" <td>"); writeln(" <input type='button' value='Sig' onclick='parent.siguienteIzq()'>"); writeln(" </td>"); writeln(" <td>");

Page 92: Preguntas Frecuentes

writeln(" <input type='button' value='Ult' onclick='parent.ultimoIzq()'>"); writeln(" </td>"); writeln(" </tr>"); writeln(" </table>"); writeln(" </td>"); writeln(" <td>"); writeln(" </td>"); writeln(" <td>"); writeln(" <table border='0'>"); writeln(" <tr>"); writeln(" <td>"); writeln(" <input type='button' value='Pri' onclick='parent.primeroDer()'>"); writeln(" </td>"); writeln(" <td>"); writeln(" <input type='button' value='Ant' onclick='parent.anteriorDer()'>"); writeln(" </td>"); writeln(" <td>"); writeln(" <input type='button' value='Sig' onclick='parent.siguienteDer()'>"); writeln(" </td>"); writeln(" <td>"); writeln(" <input type='button' value='Ult' onclick='parent.ultimoDer()'>"); writeln(" </td>"); writeln(" </tr>"); writeln(" </table>"); writeln(" </td>"); writeln(" </table>"); writeln(" </form>"); writeln("</body>"); writeln("</html>"); close(); } }   </script>   </head> <frameset rows="100%,*" frameborder="no" border="0" framespacing="0" onload="javascript:formulario()"> <frame name="pantalla" src="pruDummy.htm" frameborder="no" border="0"> <frame name="dummy" src="pruDummy.htm"> </frameset> </html>

Page 93: Preguntas Frecuentes

Javascript:¿Cómo validar una dirección de email utilizando expresiones regulares?Versión Simple

<html> <head>  <script language="javascript" type="text/javascript" defer> function validaEmail(email) { var re = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/; if (!re.test(email)) { alert ("Dirección de email inválida"); return false; } return true; }</script> </head>  <body> <center> <form name="email" onSubmit="return validaEmail(this.email.value);"> Email: <input type="text" name="email"><br> <input type=submit value="Submit"> </form> </center> </body> </html>

Versión Compleja:

<html> <head>  <script language="javascript" type="text/javascript" defer> // Regexp creado por Sandeep V. Tamhankar ([email protected])  function emailCheck (emailStr) {  var emailPat=/^(.+)@(.+)$/; var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; var validChars="\[^\\s" + specialChars + "\]"; var quotedUser="(\"[^\"]*\")"; var ipDomainPat=/^[(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})]$/; var atom=validChars + '+';

Page 94: Preguntas Frecuentes

var word="(" + atom + "|" + quotedUser + ")"; var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$"); var matchArray=emailStr.match(emailPat); if (matchArray==null) { alert("La dirección de correo parece ser inválida (verifique las @ y .)") return false } var user=matchArray[1] var domain=matchArray[2]  if (user.match(userPat)==null) { alert("El nombre de usuario parece ser inválido.") return false }  var IPArray=domain.match(ipDomainPat) if (IPArray!=null) { for (var i=1;i<=4;i++) { if (IPArray[i]>255) { alert("La dirección IP de destino es inválida!") return false } } return true }  var domainArray=domain.match(domainPat) if (domainArray==null) { alert("El dominio no parece ser válido.") return false } var atomPat=new RegExp(atom,"g") var domArr=domain.match(atomPat) var len=domArr.length if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) { alert("Las direcciones deben terminar con dominios de tres letras, o el código de país de dos letras.") return false }  if (len<2) { var errStr="Dominio Inválido!"; alert(errStr) return false }  return true; }

Page 95: Preguntas Frecuentes

</script> </head>   <body> <center> <form name="email" onSubmit="return emailCheck(this.email.value);"> Email: <input type="text" name="email"><br> <input type=submit value="Submit"> </form> </center> </body> </html>

Funciona en:

- IE 4+

- Netscape 4+

- Opera 5+

- Mozilla 0.8+ / Netscape 6+

Javascript:¿Cómo puedo capturar el texto que está seleccionado dentro de mi página?Créditos: Tomado de una respuesta de DanielRey

[ver ejemplo]

<html> <head> <a name="#1"> <script language="JavaScript"> function sele() { a=document.selection.createRange(); alert("Tipo de selección: " + document.selection.type + "\nTexto seleccionado: " + a.text); } </script> </head> <body>

Page 96: Preguntas Frecuentes

<form name="frm"> <table border="0"> <tr> <td align="right"> input: </td> <td> <input type="textInput" name="txt"> </td> </tr> <tr> <td align="right"> textarea: </td> <td> <textarea name="txtArea"></textarea> </td> </tr> <tr> <td align="right"> Link: </td> <td> <a href="#1">Enlace</a> </td> </tr> <tr> <td align="right"> Select: </td> <td> <select> <option>Uno</option> <option>Dos</option> <option>Tres</option> </select> </td> </tr> <tr> <td align="right"> Párrafo: </td> <td> Esto es un párrafo de donde también se puede seleccionar texto. </td> </tr> <tr> <td align="center" colspan="2"> <a href=JavaScript:sele()>Ver texto seleccionado</a> </td> </tr>

Page 97: Preguntas Frecuentes

</form> </body> </html>

Javascript:¿Cómo impedir que seleccionen más de dos checkbox en un formulario?<script>  function countChoices(obj) { max = 1; // max. number allowed at a time  a = obj.form.PollVote1.checked; // your checkboxes here b = obj.form.PollVote2.checked;  // add more if necessary  count = (a ? 1 : 0) + (b ? 1 : 0); // If you have more checkboxes on your form // add more (box_ ? 1 : 0) 's separated by '+'  if (count > max) { alert("Atencion! Solo puede seleccionar " + max + " opcion! \Quite una de ellas si quiere seleccionar otra."); obj.checked = false; } }   </script>  Y el campo checkbox es de la forma  <form name="form">  <input type="checkbox" value="1" name="PollVote1" onClick="countChoices(this)">  <input type="checkbox" value="2" name="PollVote2" onClick="countChoices(this)">  <form>  Si tienes los campos de esta forma (gracias tunait):  

Page 98: Preguntas Frecuentes

<form name="form">  <input type="checkbox" value="1" name="PollVote" onClick="countChoices(this)">  <input type="checkbox" value="2" name="PollVote" onClick="countChoices(this)">  <form>   deberás poner:  a = obj.form.PollVote[1].checked; // your checkboxes here b = obj.form.PollVote[2].checked;

Un saludo

Javascript:¿Cómo puedo extraer de un elemento select el índice o el valor o el nombre desplegado en la opción seleccionada?<html> <head> <script language="JavaScript"> function cambia(){ with (document.frm){ indice.value = String(selector.selectedIndex); opcion.value = selector.options[selector.selectedIndex].text; valor.value = selector.options[selector.selectedIndex].value; } } </script> </head> <body> <form name="frm"> Indice:<input type="text" name="indice"><br> Opcion:<input type="text" name="opcion"><br> Valor: <input type="text" name="valor"><br> Seleccione:<select name="selector" onchange="cambia()"> <option>Seleccione un valor</option> <option value="1">Uno</option> <option value="2">Dos</option> <option value="3">Tres</option> </select>

Page 99: Preguntas Frecuentes

</form> </body> </html>

Javascript:¿Cómo puedo hacer para que al cambiar la opción seleccionada en un combo, cambien también las opciones disponibles en otro combo indicando la URL de destino?Modificado[ver ejemplo]

<!-- basado en el código original propuesto por Kaopectate --> <html> <head> <script language="JavaScript">   function addOpt(oCntrl, iPos, sTxt, sVal){ var selOpcion=new Option(sTxt, sVal); eval(oCntrl.options[iPos]=selOpcion); }   function cambia(oCntrl){ switch (document.frm.pais.selectedIndex){ case 0: addOpt(oCntrl, 0, "Ciudad de México", "http://www.mexico.com"); addOpt(oCntrl, 1, "Monterrey", "http://www.monterrey.com"); addOpt(oCntrl, 2, "Guadalajara", "http://www.guadalajara.com"); break; case 1: addOpt(oCntrl, 0, "Madrid", "http://www.madrid.com"); addOpt(oCntrl, 1, "Barcelona", "http://www.barcelona.com"); addOpt(oCntrl, 2, "San Sebastián", "http://www.sansebastian.com"); break; case 2: addOpt(oCntrl, 0, "Caracas", "http://www.caracas.com"); addOpt(oCntrl, 1, "Maracay", "http://www.maracay.com"); addOpt(oCntrl, 2, "Valencia", "http://www.valencia.com"); break; } } </script> </head> <body>

Page 100: Preguntas Frecuentes

<form name="frm"> <table border="0" width="482"> <tr> <td width="25"> Pais </td> <td width="89"> <select name="pais" onchange="cambia(document.frm.ciudad)"> <option value="Mex">Mexico</option> <option value="Esp">España</option> <option value="Ven">Venezuela</option> </select> </td> <td width="6"> &nbsp; </td> <td width="44"> Ciudad </td> <td width="296"> <select name="ciudad" onChange="location.href=this.form.ciudad.options[this.form.ciudad.selectedIndex].value"> <option value="0">Ciudad de México</option> <option value="1">Monterrey</option> <option value="2">Guadalajara</option> </select> <input type="button" value="Ir a..." onClick="location.href=this.form.ciudad.options[this.form.ciudad.selectedIndex].value"</td> </tr> </table> </form> </body> </html>

Javascript:¿Cómo indicar a un visitante de un formulario que se ha dejado campos sin rellenar?Estando delante cuando lo rellene o de esta manera:

Se pueden poner todos los campos que se quiera.

Page 101: Preguntas Frecuentes

<html> <head>   <script> //Script original de KarlanKas para Forosdelweb.com    function comprobar(){var mal=false; numero=document.forms[0].elements.length; for(a=0;a<numero;a++){ if (document.forms[0].elements[a].value==""){document.forms[0].elements[a].style.backgroundColor="#ffffcc";mal=true;} else{document.forms[0].elements[a].style.backgroundColor="white";} } if(mal){alert("Por favor, rellene las cajas coloreadas");} else{document.forms[0].submit()} }   </script> </head>  <body> <form action="javascript:alert('enviando')" method="post" name="formulario" id="formulario" style="font:normal 10px/10px verdana;border:solid 1px black;text-align:right;width:300px;" > Nombre: <input type="text" name="cosa" id="cosa"><br> Apellidos: <input type="text" name="cosa" id="cosa"><br> Dirección: <input type="text" name="cosa" id="cosa"><br> Nombre del perro: <input type="text" name="cosa" id="cosa"><br> País: <input type="text" name="cosa" id="cosa"><br> Conocidos con perro: <input type="text" name="cosa" id="cosa"><br> <input onclick="comprobar()" type="button" name="enviar" value="Enviar!">    </form>   </body> </html>

__________________

Cómo escribir|Cómo preguntar

Page 102: Preguntas Frecuentes

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Javascript:¿Cómo saber si han rellenado un input con varios caracteres iguales?Por medio de este script:

<html> <head> <title>Contando letritas</title> <script> //Script original de KarlanKas para Forosdelweb.com    record=0; igual=1; var letraRecord var b=0 var letra="" function comprobar(esto){   for (a=1;a<esto.length;a++){   if (esto.charAt(a)==esto.charAt(b)){ igual=igual+1; letra=esto.charAt(a);} else{ if(igual>record){record=igual;letraRecord=letra} igual=1 } b=a } if(igual>record){record=igual;letraRecord=letra} if (record>1){alert("La letra que más se repite es la "+letraRecord+" que aparece seguida "+record+" veces.")} else {alert("Ninguna letra se repite seguida");} } </script> </head>  <body> <form action="javascript:alert('HOLAA!!')" method="post" name="formuario" id="formuario">   <input type="text"

Page 103: Preguntas Frecuentes

name="caja" size="130" onblur="comprobar(this.value)">    </form>   </body> </html>

Dernuke propone una versión usando expresiones regulares y propone algún variante:

<html><head><title>Contando letritas</title><script>// por derkeNukefunction comprobar(str) {   var res=str.match(/([a-z]){1}\1+/gi);   mensaje="Las repeticiones de letras seguidas son: \r"; for(a=0; a<res.length; a++) mensaje+="- "+res[a].substring(0,1)+" "+res[a].length+" veces.\r"; alert(mensaje);   // si queremos ordenar el resultado de mayor a menor repeticion: res.sort( function(a,b) { if(a.length>b.length) return -1; else if(a.length==b.length) return 0; else return 1; } );   mensaje="Las repeticiones de letras seguidas ya ordenadas son: \r"; for(a=0; a<res.length; a++) mensaje+="- "+res[a].substring(0,1)+" "+res[a].length+" veces.\r"; alert(mensaje);  }</script></head>

Page 104: Preguntas Frecuentes

 <body><form action="javascript:alert('HOLAA!!')" method="post" name="formuario" id="formuario">  <input type="text" name="caja" size="130" value="eqewwqFaaaasscccFasaeqw" onblur="comprobar(this.value)"> </form>  </body></html>

__________________

Cómo escribir |Cómo preguntar

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Javascript:¿Cómo rellenar cajas de texto con elementos seleccionados de un pop up?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  <html> <head> <title>Untitled</title> <script> //Script original de KarlanKas para forosdelweb.com   camisa=["Seleccione...","Roja","Verde","Amarilla"]; pantalon=["Seleccione...","De campana","pitillo","chino","pata de elefante"] sombrero=["Seleccione...","De Ala Ancha","Hongo","Chistera","Boina","Gorra"]   function elegir(esto){   lista=esto.value opcion=eval(lista);

Page 105: Preguntas Frecuentes

codigo='<select style="font: normal 10px/20px verdana; color: navy" name="opciones" onChange="opener.formulario.enviar.disabled=false;opener.formulario.que'+lista+'.value=unescape(this.options.value); self.close()" >'; for (a=0;a<opcion.length;a++){ codigo+="<option value="+escape(opcion[a])+">"+opcion[a]+"</option>\n"; } codigo+="</select>";   pepe=window.open('','','width=200,height=50'); pepe.document.write("<html>"); pepe.document.write("<head>"); pepe.document.write(" <title>Elige Opción</title>"); pepe.document.write("</head>"); pepe.document.write('<body bgcolor="#ffffcc">'); pepe.document.write(codigo); pepe.document.write("</body>"); pepe.document.write("</html>"); }   </script> </head>  <body> <form action="javascript:alert('Enviandooo!!')" name="formulario" id="formulario" style="font: normal 10px/20px verdana; color: navy" title="Elige que comprar"> <input type="radio" name="opcion" value="camisa" onClick="elegir(this)">camisa<br> <input style="border:solid 1px black" type="text" name="quecamisa" readonly><br>   <input type="radio" name="opcion" value="pantalon" onClick="elegir(this)">pantalón<br>   <input style="border:solid 1px black" type="text" name="quepantalon" readonly><br>   <input type="radio" name="opcion" value="sombrero" onClick="elegir(this)">sombrero<br>

Page 106: Preguntas Frecuentes

  <input style="border:solid 1px black" type="text" name="quesombrero" readonly><br><br>     <input style="heigth:15px;font: normal 10px/10px verdana; color: navy" type="submit" id="enviar" value="Enviar!" disabled> </form>   </body> </html>

____

Javascript:¿Cómo validar que un campo sea vacío,aunque se haya presionado la barra espaciadora?<html><head><script language="JavaScript"><!-- function verificar(){if(form1.nombre_campo.value.replace(/ /g, '') == ''){alert("Debe Ingresar un valor ");form1.nombre_campo.focus();form1.nombre_campo.select();return false;}}--></script><title>Validar Campo Vacío</title></head><body><form name="form1"><input name="nombre_campo" type="text" size="15" maxlength="15">

Page 107: Preguntas Frecuentes

<input type="button" name="Validar" value="Validar" onclick="verificar()"></form></body></html>

Javascript:¿Cómo puedo hacer una entrada de datos donde se valide el ingreso de caracteres numéricos o los signos ",.-" y que al salir del mismo aparezca el resultado con decimales y formato para los miles?Créditos: Mackpipe

[ver ejemplo]

<html> <head> <script> function NumberFormat(num, numDec, decSep, thousandSep){ var arg; var Dec; Dec = Math.pow(10, numDec); if (typeof(num) == 'undefined') return; if (typeof(decSep) == 'undefined') decSep = ','; if (typeof(thousandSep) == 'undefined') thousandSep = '.'; if (thousandSep == '.') arg=/./g; else if (thousandSep == ',') arg=/,/g; if (typeof(arg) != 'undefined') num = num.toString().replace(arg,''); num = num.toString().replace(/,/g, '.'); if (isNaN(num)) num = "0"; sign = (num == (num = Math.abs(num))); num = Math.floor(num * Dec + 0.50000000001); cents = num % Dec; num = Math.floor(num/Dec).toString(); if (cents < (Dec / 10)) cents = "0" + cents; for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) num = num.substring(0, num.length - (4 * i + 3)) + thousandSep + num.substring(num.length - (4 * i + 3)); if (Dec == 1)

Page 108: Preguntas Frecuentes

return (((sign)? '': '-') + num); else return (((sign)? '': '-') + num + decSep + cents); }   function EvaluateText(cadena, obj){ opc = false; if (cadena == "%d") if (event.keyCode > 47 && event.keyCode < 58) opc = true; if (cadena == "%f"){ if (event.keyCode > 47 && event.keyCode < 58) opc = true; if (obj.value.search("[.*]") == -1 && obj.value.length != 0) if (event.keyCode == 46) opc = true; } if(opc == false) event.returnValue = false; } </script> </head> <body> <form name="frm"> numero <input type="text" name="input1" size="15" value="500034567" onkeypress="EvaluateText('%f', this);" onBlur="this.value = NumberFormat(this.value, '2', '.', ',')"><br><br> </form> </body> </html>

Javascript:¿Cómo puedo llenar un campo de un formulario a partir de un valor seleccionado en un popup?[ver ejemplo]

Formulario.htm

<html> <head> <script language="JavaScript"> function buscar(){ open("Popup.htm"); } </script>

Page 109: Preguntas Frecuentes

</head> <body> <form name="frm"> <table border="0"> <tr> <td align="right"> Editorial </td> <td> <input type="text" name="editorial"> <input type="button" value="buscar" onclick="buscar()"><br> </td> </tr> </table> </form> </body> </html>

Popup.htm

<html> <head> <script language="JavaScript"> var seleccionado = ""; var aEdit = new Array( "MacGraw_Hill", "Microsoft_Press", "Salvat" );   function cambiaSel(chk){ seleccionado = chk.value; }   function envia(){ opener.document.frm.editorial.value = seleccionado; close(); } </script> </head> <body> <form name="frm2"> <script language="JavaScript"> for (var i = 0; i < aEdit.length; i++) document.write("<input type='radio' name='ed' value='" + aEdit[i] + "' onclick='cambiaSel(this)'>" + aEdit[i] + "<br>"); </script> <input type="button" name="enviar" value="Enviar" onclick="envia()"> </form>

Page 110: Preguntas Frecuentes

</body> </html>

Javascript:¿Cómo Selecciono o Desmarco Varios Checkbox al mismo tiempo?Cita:

Este Código va en el Header

Código:

<SCRIPT LANGUAGE="JavaScript"> <!-- Beginvar checkflag = "false";function check(field) {if (checkflag == "false") {for (i = 0; i < field.length; i++) {field[i].checked = true;}checkflag = "true";return "Uncheck All"; }else {for (i = 0; i < field.length; i++) {field[i].checked = false; }checkflag = "false";return "Check All"; }}// End --></script>

Cita:

Este Código va dentro del BODY

Código:

<form name="name"> <input type="checkbox" name="SLT_ALL" value="Check All" onClick="this.value=check(this.form.lista)">

Page 111: Preguntas Frecuentes

 <input type="checkbox" name="lista" value="a"><input type="checkbox" name="lista" value="b"><input type="checkbox" name="lista" value="c"><input type="checkbox" name="lista" value="d"><input type="checkbox" name="lista" value="e"><input type="checkbox" name="lista" value="f"> </form>

Javascript:¿Cómo agregar elementos en una forma (text y textarea)?<html> <head> <title>Form Page</title> <!-- Javascript code for the dynamic form elements. --> <script> // Declare the form field count javascript variable so you know how many the user have added. //The CGI.REQUEST_METHOD bit is the CF code for setting this variable back to the count where it was last up to. var tFormFieldCount = 1; var tFormFieldList = "";   // Function to dynamically insert the form field to the cell below. If you want textareas or other form elements, just create another function and change the html insert text below. function MakeOne(FieldType) { // Depending on what type of form fields the user choose then dynamically write the appropriate form element to the page if (FieldType == 'TextInput') { document.getElementById('DynamicContent').innerHTML += 'Form Element ' + tFormFieldCount + '- Text input box&nbsp;&nbsp;<input type="text" name="TextInput' + tFormFieldCount + '"><br>'; } else if (FieldType == 'Textarea') { document.getElementById('DynamicContent').innerHTML += 'Form Element ' + tFormFieldCount + '- Textarea&nbsp;&nbsp;<textarea name="Textarea' + tFormFieldCount + '" cols=30 rows=3></textarea><br>'; }   // Populate the form element list. if (tFormFieldList == "") { tFormFieldList = FieldType; } else {

Page 112: Preguntas Frecuentes

tFormFieldList += "," + FieldType; }   document.forms[0].FormFieldCount.value = tFormFieldCount; document.forms[0].FormFieldList.value = tFormFieldList; tFormFieldCount++; }   // Just a function to check if the user have added any text input fields. function CheckIt() { if (tFormFieldCount == 1) { alert('You must add at least one text input field.'); return false; } return true; } </script> </head>  <body bgcolor="#FFFFFF"> <!-- HTML form tag. --> <!-- Action attribute specify where the form data is to be sent to --> <!-- Method attribute specify what method the form data is to be sent. POST or GET. Default is GET. --> <form action="ResultsPage.cfm" method="post" onSubmit="return CheckIt();"> <table cellspacing=0 cellpadding=4 border=1> <tr><td align="right"><input type="button" value="Add Form Text Fields" onClick="MakeOne('TextInput');">&nbsp;&nbsp;<input type="button" value="Add Form Textarea" onClick="MakeOne('Textarea');"></td></tr> <tr> <td id="DynamicContent" valign="top"> <!-- Cold fusion code again to test to see if the request method of this page is POST or GET. --> <!-- If is POST then you know is from the result page and there s data to be output. -->   </td> </tr> <tr> <td align="right" colspan=2> <!-- Hidden form field to pass the count of the text inputs to the result page. --> <input type="hidden" name="FormFieldList"> <input type="hidden" name="FormFieldCount"> <input type="submit" value="Send It"> </td> </tr>

Page 113: Preguntas Frecuentes

</table> </form> </body> </html>

Javascript:¿Cómo puedo comparar las palabras de un elemento textarea respecto a las palabras existentes en otro textarea?<html> <head> <script language="JavaScript">   function separa(sTxt, sSep){ var sTx2 = ""; var bPalabra = false; for (var j = 0; j < sTxt.length; j++){ if (sSep.indexOf(sTxt.charAt(j)) != -1){ if (bPalabra) sTx2 += " "; bPalabra = false; } else { bPalabra = true; sTx2 += sTxt.charAt(j); } } return sTx2; }   function comunes(aIzq, aDer){ var i, j, nRes, sPal; nRes = 0; sPal = ""; for (i = 0; i < aIzq.length; i++) for (j = 0; j < aDer.length; j++) if (aIzq[i] == aDer[j]) if (sPal.indexOf(aIzq[i]) == -1){ nRes++; sPal += " " + aIzq[i]; } document.frm.comunes.value = String(nRes); }   function soloEnA(aIzq, aDer){ var i, j, nRes, sPal, bPresente; nRes = 0;

Page 114: Preguntas Frecuentes

sPal = ""; for (i = 0; i < aIzq.length; i++){ bPresente = false; for (j = 0; (j < aDer.length) && !bPresente; j++) bPresente = (aIzq[i] == aDer[j]) if (!bPresente && (sPal.indexOf(aIzq[i]) == -1)){ nRes++; sPal += " " + aIzq[i]; } } document.frm.soloA.value = String(nRes); }   function soloEnB(aIzq, aDer){ var i, j, nRes, sPal, bPresente; nRes = 0; sPal = ""; for (i = 0; i < aDer.length; i++){ bPresente = false; for (j = 0; (j < aIzq.length) && !bPresente; j++) bPresente = (aDer[i] == aIzq[j]) if (!bPresente && (sPal.indexOf(aDer[i]) == -1)){ nRes++; sPal += " " + aDer[i]; } } document.frm.soloB.value = String(nRes); }   function calcula(){ var sIzq, sDer, aIzq, aDer; sIzq = separa(document.frm.texto.value, ";.,:"); sDer = separa(document.frm.diccionario.value, ";.,:"); sIzq = sIzq.replace(/[rnf]/g, " "); sDer = sDer.replace(/[rnf]/g, " "); aIzq = sIzq.split(" "); aDer = sDer.split(" "); comunes(aIzq, aDer); soloEnA(aIzq, aDer); soloEnB(aIzq, aDer); } </script> </head> <body> <form name="frm"> <table border="0"> <tr> <td align="center"> Area A </td> <td align="center">

Page 115: Preguntas Frecuentes

Area B </td> </tr> <tr> <td align="left"> <textarea name="texto" onkeyup="calcula()"></textarea> </td> <td align="right"> <textarea name="diccionario" onkeyup="calcula()"></textarea> </td> </tr> <tr> <td colspan="2" align="center"> <table border="0"> <tr> <td align="left"> En A y no en B </td> <td align="center"> Comunes </td> <td align="right"> En B y no en A </td> </tr> <tr> <td align="left"> <input type="text" name="soloA"> </td> <td align="center"> <input type="text" name="comunes"> </td> <td align="right"> <input type="text" name="soloB"> </td> </tr> </table> </td> </tr> </table> </form> </body> </html>

Page 116: Preguntas Frecuentes

Javascript:¿Cómo validar que se seleccionen solo archivos de determinado tipo en un INPUT TYPE='FILE'?Usa esta función

function LimitAttach(tField,iType) { file=tField.value; if (iType==1) { extArray = new Array(".gif",".jpg",".png"); } if (iType==2) { extArray = new Array(".swf"); } if (iType==3) { extArray = new Array(".exe",".sit",".zip",".tar",".swf",".mov",".hqx",".ra",".wmf",".mp3",".qt",".med",".et"); } if (iType==4) { extArray = new Array(".mov",".ra",".wmf",".mp3",".qt",".med",".et",".wav"); } if (iType==5) { extArray = new Array(".html",".htm",".shtml"); } if (iType==6) { extArray = new Array(".doc",".xls",".ppt"); } allowSubmit = false; if (!file) return; while (file.indexOf("\\") != -1) file = file.slice(file.indexOf("\\") + 1); ext = file.slice(file.indexOf(".")).toLowerCase(); for (var i = 0; i < extArray.length; i++) { if (extArray[i] == ext) { allowSubmit = true; break; } } if (allowSubmit) { } else { tField.value=""; alert("Usted sólo puede subir archivos con extensiones " + (extArray.join(" ")) + "\nPor favor seleccione un nuevo archivo"); }

Page 117: Preguntas Frecuentes

}

de tal forma que en tu input type='file' agreges onBlur='LimitAttach(this,n);' donde n es el tipo de

validacion que deseas hacer

Nota. Los tipos de validaciones mostrados son

1: gif, jpg, png

2: swf

3: exe, sit, zip, tar, swf, mov, hqx, ra, wmf, mp3, qt, med, et

4: mov, ra, wmf, mp3, qt, med, et, wav

5: htm, html, shtml

6: doc, xls, ppt

pero pueden agregarse o cambiarse según se necesiten

Última edición por KarlanKas; 30-jun-2003 a las 15:06

--Mickel 30 Jun 2003

Javascript:¿Cómo puedo generar sobre mi página un número distinto de campos de texto según lo que indique el usuario?<html> <head> <script language="JavaScript">   var nValores = 0;   function cambiaPg(){ with (window.pantalla.document){ nValores = parseInt(frm.cant.value, 10); } formulario(); }   function formulario(){ with (window.pantalla.document){

Page 118: Preguntas Frecuentes

open(); writeln("<html>\n<body>"); writeln("<form name='frm'>"); writeln(" Número de textos:"); writeln(" <input type='text' name='cant'>"); writeln(" <input type='button' name='btn' value='Aplicar' onclick='parent.cambiaPg()'>"); writeln("<br>"); for (var i = 0; i < nValores; i++){ writeln("Valor " + String(i) + ":"); writeln("<input type='text' name='c" + String(i) + "'><br>"); } writeln("</form>"); writeln("</body>\n</html>"); close(); } }   document.writeln("<frameset rows='100%,*' onload='javascript:parent.formulario()'>"); document.writeln(" <frame name='pantalla' src='DummyPage.htm'>"); document.writeln(" <frame src=''>"); document.writeln("</frameset>");   </script> </head> </html>

Javascript:¿Cómo puedo limitar el número de caracteres de un textarea?La solución no es el atributo maxlength que tiene los campos de texto. Consiste en cada vez

que se introduzca un carácter en el textarea, contar el número total de caracteres que van ya

escritos y en caso de haberse superado, borrar el último carácter.

<script language="JavaScript"> function maximaLongitud(texto,maxlong) { var tecla, in_value, out_value;   if (texto.value.length > maxlong) { in_value = texto.value; out_value = in_value.substring(0,maxlong); texto.value = out_value; return false; }

Page 119: Preguntas Frecuentes

return true; } </script>  <textarea name="nombre_textarea" cols="50" rows="5" onKeyUp="return maximaLongitud(this,254)">

Javascript:¿Cómo evitar que vuelvan a dar al Submit?Puedes poner un cartel que ponga que no den más de una vez al botón o hacer esto:

Pon un nombre al botón de submit... por ejemplo:

<INPUT TYPE="submit" VALUE="Mandar" NAME="enviar">

y luego en la etiqueta form pon:

<FORM action="destino.php" method="post" onsubmit="document.forms[0].enviar.value='Por favor espere un momento';document.forms[0].enviar.disabled=true;">

Con esto consigues que no vuelvan a dar a submit....

Te recomiendo que arregles un poco los botones con CSS, si no se verán horribles!

__

Javascript:¿Cómo validar el formulario de una forma sencilla iluminando los errores?Con este código. Es muy fácil añadir reglas. Sólo se van poniendo en el orden de los inputs en

el formulario las reglas con el numerito de orden que les corresponda y se utiliza la variable

valor para referirse al valor de dicho input.

Page 120: Preguntas Frecuentes

Para el mensaje de error lo mismo, se usa error con el numerito de orden de input entre

corchetes y se pone entre comillas el mensaje de error.

Un ejemplo:

<html> <head> <style> form,td{font:normal 10px/10px verdana;} input{font:normal 10px/10px verdana;border:solid 1px black} </style> <title>Prueba</title> <script> //Script original de KarlanKas para forosdelweb.com //Adaptado a firefox gracias a JavierB ;-)   colorMal="#eeddee"; colorBien="white";   regla=new Array()   regla[0]="valor.length<3"; regla[1]="isNaN(valor) || valor<600000000"; regla[2]="valor.lastIndexOf('@')!=valor.indexOf('@') || valor.indexOf('@')<2 || valor.lastIndexOf('.')<valor.length-4 || valor.lastIndexOf('.')>valor.length-3";   mensaje=new Array()    mensaje[0]="Por favor, introduzca el nombre"; mensaje[1]="El número de teléfono introducido no es válido"; mensaje[2]="correo inválido";   function comprobar(){ errores=""; mensaje2=""; for(a=0;a<regla.length;a++){ valor=document.forms[0].elements[a].value; if(eval(regla[a])){ mensaje2=(mensaje[a])?mensaje[a]:"Por favor, rellene el campo "+document.forms[0].elements[a].name; errores+=mensaje2+"<br>"; document.forms[0].elements[a].style.background=colorMal;} else{document.forms[0].elements[a].style.background=colorBien;} } pepe=document.getElementById("herror"); pepe.style.background=(errores!="")?colorMal:colorBien; pepe.style.border=(errores!="")?"solid 1px black":"none"; pepe.innerHTML=errores;  

Page 121: Preguntas Frecuentes

return (errores=="") }    </script> </head>  <body> <form onsubmit="return comprobar()"> <table><tr><td>nombre:</td><td><input type=text name=nombre></td><td style="font:normal 10px/15px verdana;padding:5px 5px 5px 5px;"rowspan=10 valign="top" id="herror"></td></tr> <tr><td>telefono:</td><td><input type=text name="telefono"></td></tr> <tr><td>e-mail:</td><td><input type=text name="email"></td></tr> <tr><td colspan=2 align="center"><input type="submit" value="enviar"></td></tr></table>  </form>   </body> </html>

__

Javascript:Combos encadenados para armar con Bases de datos¿Cómo puedo poner en mi página dos combos que dependiendo de la opción seleccionada en

uno de ellos me cambie el contenido del otro combo, teniendo en cuenta de que todas las

opciones provienen de una base de datos?

<html> <head> <script language="JavaScript">   /* Trae desde la base de datos los nombres de los paises */ /* y colócalos en este arreglo. */ var aPaises = new Array( " ", "Mexico", "España", "Venezuela" );   var aEstados0 = new Array( " "

Page 122: Preguntas Frecuentes

);   /* Trae desde la base de datos los nombres de las ciudades */ /* de cada uno de los paises de la lista anterior y ponlos */ /* en arreglos individuales. */ var aEstados1 = new Array( " ", "Ciudad de México", "Monterrey", "Guadalajara" );   var aEstados2 = new Array( " ", "Madrid", "Barcelona", "San Sebastián" );   var aEstados3 = new Array( " ", "Caracas", "Coro", "Maracay", "Valencia" );   /* Arma un arreglo general de estados a partir de los arreglos */ /* anteriores. Es importante que cada arreglo comience por un */ /* valor en blanco y que el primer arreglo de ciudades, llamado */ /* aqui aEstados0, no contenga ningún elemento. */ var aEstados = new Array( aEstados0, aEstados1, aEstados2, aEstados3 );   function opcion(oCntrl, iPos, sTxt, sVal){ var selOpcion=new Option(sTxt, sVal); eval(oCntrl.options[iPos]=selOpcion); }   function cambia(oMster, oCntrl){ var nSelected = oMster.selectedIndex; while (oCntrl.length) oCntrl.remove(0); for(var i = 0; i < aEstados[nSelected].length; i++) opcion(oCntrl, i, aEstados[nSelected][i], String(i)); }   function llena(oCntrl){

Page 123: Preguntas Frecuentes

while (oCntrl.length) oCntrl.remove(0); for(var i = 0; i < aPaises.length; i++) opcion(oCntrl, i, aPaises[i], String(i)); }   </script> </head> <body> <form name="frm"> País <select name="pais" onchange="cambia(this, document.frm.ciudad)"> <option value=" ">&nbsp;</option> </select> &nbsp;&nbsp;&nbsp; Ciudad <select name="ciudad"> <option value=" ">&nbsp;</option> </select> </form> <script language="JavaScript"> llena(document.frm.pais); </script> </body> </html>

Javascript:Quiero que un submit del form se muestre en una ventana emergenteHay que poner el target del form con un nombre para la ventana emergente y abrir esa ventana

en el evento onsubmit...

Ejemplo:

<form name="formulario" action="destino.php" target="ventanaForm" onsubmit="window.open('', 'ventanaForm', '')" method="post" >...

Saludos

Nota adicional:

Page 124: Preguntas Frecuentes

Si se quiere enviar el formulario sin usar un botón submit (mediante la función submit() del

formulario) debe abrirse la ventana antes (no serviría en tal caso el evento onsubmit)

function enviar() { window.open("", "ventanaForm", ""); document.forms["formulario"].submit(); }

Javascript:¿Cómo insertar emoticones en un textarea?Voy a intentar repetir este mensaje porque he visto que se fue.

Para añadir texto en un textarea simple basta con hacer una función así:

function poner(este_texto) { el_textarea.value += este_texto; }

... luego los botones o los elementos activos para insertar emoticones (pueden ser los mismos

emoticones) tendrían que tener asociada la función poner con el emoticón adecuado: <input

type=button onclick="poner('; - )')" value="; - )" />

Por último hay que convertir cada ocurrencia del emoticón con la imagen asociada (toda la

etiqueta) el_texto = el_textarea.value.split("; - )").join("<img src=smyle.gif />");

El método split convierte la cadena que lo usa en un array donde se separan los elementos por

el parámetro que se pasa... luego join vuelve a generar la cadena, usando el parámetro como

nexo.

P.D: Supongo que no habrá mucha diferencia con la FAQ original.

Javascript:¿Cómo recoger los valores de un formulario en la página de destino?Con este código:

Page 125: Preguntas Frecuentes

Arreglado pequeño bug

<html> <head> <script>  //Script original de KarlanKas para forosdelweb.com  enviado=location.href.split("?"); igualdades=enviado[1].split("&");  for(a=0;a<igualdades.length;a++){ igualdades[a]=igualdades[a].split("+").join(" "); valores=igualdades[a].split("="); eval("var "+valores[0]+"='"+valores[1]+"'"); } </script>

Es importante que el método empleado en el formulario sea GET.

___

Javascript:¿Cómo puedo poner una opción de un select "selected"?Asignando al value del elemento select el value de la opción que se quiera seleccionar...

Ejemplo:

... <body onload="document.forms['mi_Form']['mi_Select'].value = 'op2'" > ... <form name='mi_Form' > <select name='mi_Select' > <option value='op1' > opción 1 </option> <option value='op2' > opción 2 </option> <option value='op3' > opción 3 </option>

Page 126: Preguntas Frecuentes

 </select>...</body>

Notas:

1. Evidentemente, el valor debe existir.

2. De la forma inversa se puede saber el valor seleccionado de un select con el value del

mismo (Sería una simplificación de una FAQ anterior)

Javascript:¿Cómo hacer escoger fecha de nacimiento?Bueno, para las personas que necesitan crear un formulario sea para lo que sea y necesitan

crear año de nacimiento, entonces deben crear tres combos (selects) para poder realizarlo,

Entonces, en el html deben poner este código:

<select id="anhoNac" onchange="ponerDias()"> <script>ponerAnho();</script></select><select id="mesNac" onchange="ponerDias()"> <script>ponerMes();</script></select><select id="diaNac"> <script>ponerDias();</script></select>

En esta parte lo que se crea son tres select, el del año (anhoNac), mes (mesNac) y dia

(diaNac). Cada uno ejecuta una funcion. cuando se carga el año ejecuta la funcion

ponerAnho(), cuyo código es el siguiente:

function ponerAnho(){ var anho = document.getElementById("anhoNac");//tomamos el elemento anhoNac. fechaActual = new Date();//fecha actual anhoActual = fechaActual.getYear();//año de la fecha actual anhoActual+=1900;//debido a que nos arroja los años transcurridos entre 1900 (en este caso 109) le debemos sumar 1900 para que nos de 2009)

Page 127: Preguntas Frecuentes

var anhosTotal = anho.options.length-1;//tomamos los años que hay en el select y los borramos en el for for(var i=anhosTotal;i>=0;i--){ anho.options[i]=null; } var i=0;//creamos esta variable para las posiciones en el select for(var a=anhoActual-5;a>=anhoActual-80;a--){ op = document.createElement("OPTION");//pasamos a crear el option op.value = a; op.text = a; anho.options[i] = op;//en la posicion i creamos ese option i++;//aumentamos i }}

Luego, al cargar el mes tenemos que llamar esta funcion:

function ponerMes(){ var mes = document.getElementById("mesNac");//tomamos el elemento var nombreMes;//creamos la variable que va a contener los nombres de los meses for(var m=0;m<=11;m++){//aca escojemos el mes segun el ciclo if(m==0){ nombreMes="Enero"; } if(m==1){ nombreMes="Febrero"; } if(m==2){ nombreMes="Marzo"; } if(m==3){ nombreMes="Abril"; } if(m==4){ nombreMes="Mayo"; } if(m==5){ nombreMes="Junio"; } if(m==6){ nombreMes="Julio"; } if(m==7){ nombreMes="Agosto"; } if(m==8){ nombreMes="Septiembre"; }

Page 128: Preguntas Frecuentes

if(m==9){ nombreMes="Octubre"; } if(m==10){ nombreMes="Noviembre"; } if(m==11){ nombreMes="Diciembre"; } op = document.createElement("OPTION");//creamos la opcion var valorMes=""; var aux=0; if(m+1>0 && m+1<10){//dado que el día trabaja con el mes en dos digitos entonces le agregamos un cero (0) al inicio si es menor que 10 aux=m+1; valorMes="0"+aux; } else{//si no pues no XD valorMes=m+1; } op.value = valorMes; op.text = nombreMes; mes.options[m] = op;  }}

recuerden que como javascript maneja los elementos del select a partir de 0, entonces me

tome la molestia de asignar los meses del 0 al 11, no del 1 al 12, por lo tanto deben

comprender que sucede cuando hago "m+1".

ahora viene poner el día:

function ponerDias(){ var anho = document.getElementById("anhoNac");//tomamos el elemento año var mes = document.getElementById("mesNac");//el mes var dias = document.getElementById("diaNac");//y el dia var diasTotal = dias.options.length-1;//tomamos cuantos elementos hay en el select for(var i=diasTotal;i>=0;i--){//y los borramos dias.options[i]=null; } var diasMes = 0;//esta variable creo que ya no la uso XD //si es enero, marzo, mayo, etc, le asigno 31 dias, recuerden lo de que empieza en 0 y termina en 30 para hacer 31 dias, aqui tambien //sumo 1 a la variable

Page 129: Preguntas Frecuentes

if(mes.value=="01" || mes.value=="03" || mes.value=="05" || mes.value=="07" || mes.value=="08" || mes.value=="10" || mes.value=="12"){ //dias.options.length=30; for(var o=0;o<=30;o++){ op = document.createElement("OPTION"); op.value = o+1; op.text = o+1; dias.options[o] = op; //document.body.appendChild(dias); } } //si el mes es de 30 dias entonces solo le pongo 30 dias if(mes.value=="04" || mes.value=="06" || mes.value=="09" || mes.value=="11"){ //dias.options.length=30; for(var o=0;o<=29;o++){ op = document.createElement("OPTION"); op.value = o+1; op.text = o+1; dias.options[o] = op; //document.body.appendChild(dias); } } //pero si el mes es el desgraciado de febrero, (desgraciado por que tiene mas poquitos :S) if(mes.value=="02"){ //si es bisiesto if((anho.value % 4 == 0) && ((anho.value % 100 != 0) || (anho.value % 400 == 0))){ for(var o=0;o<=28;o++){ op = document.createElement("OPTION"); op.value = o+1; op.text = o+1; dias.options[o] = op; //document.body.appendChild(dias); } } else{//o si no lo es for(var o=0;o<=27;o++){ op = document.createElement("OPTION"); op.value = o+1; op.text = o+1; dias.options[o] = op; //document.body.appendChild(dias); } } }}

Page 130: Preguntas Frecuentes

Ahora, si vieron arriba, cuando el select del mes o del año cambian entonces se viene otra vez

a la funcion poner dia, para borrar los elementos y volverlos a poner.

Espero que les sirva.

Saludos

Imágenes

Javascript: Banners Aleatorios<html><head> <title>Selección de Banners Aleatorios</title></head> <body><SCRIPT LANGUAGE="JavaScript"> // Realizado por: Fabian Muller modificado por KarlanKas para forosdelweb.com // WebExperto.com - Ayuda al webmaster en español // Comienzo  width="468"; //Anchura del bannerheight="60"; //Altura del banner banners= new Array();banners[0]="banner1.gif";banners[1]="banner2.gif";banners[2]="banner3.swf";banners[3]="banner4.gif";banners[4]="banner5.swf"; totalbanners = banners.length;var ahora = new Date()var segundos = ahora.getSeconds()var ad = segundos % totalbanners;seleccionado=banners[ad];localizador=seleccionado.lastIndexOf('.');localizador2=localizador+4extension=seleccionado.substring(localizador+1,localizador2); archivo=seleccionado.substring(0,localizador); document.write("<center>");if (extension=="swf"){flash=seleccionado;

Page 131: Preguntas Frecuentes

document.write('<OBJECT CLASSID=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=' + width + ' height=' + height + ' CODEBASE=\"http://active.macromedia.com/flash4/cabs/swflash.cab#version=4,0,0,0\">');document.write('<PARAM NAME=\"MOVIE\" VALUE=\"' + flash + '\">');document.write('<PARAM NAME=\"PLAY\" VALUE=\"true\">');document.write('<PARAM NAME=\"LOOP\" VALUE=\"true\">');document.write('<PARAM NAME=\"QUALITY\" VALUE=\"high\">');document.write('<EMBED SRC=' + flash + ' width=' + width + ' height=' + height + ' PLAY=\"true\" LOOP=\"true\" QUALITY=\"high\" PLUGINSPAGE=\"http://www.macromedia.com/shockwave/download/index.cgi? P1_Prod_Version=ShockwaveFlash\">');document.write('</EMBED>');document.write('</OBJECT>');}else {document.write('<img src='+seleccionado+' width='+width+' height='+height+'>');document.write('</center>');}// Fin </SCRIPT> <!-- RESTO DE PÁGINA--></body></html>

Espero que sirva!

Javascript: PrecargaColocando esto en el head

Código:

<script>var foto=new Array()foto[0]=new Image()foto[0].src="pepito.jpg"foto[1]=new Image()foto[1].src="jaimito.jpg"foto[2]=new Image()foto[2].src="jorgito.jpg"</script>

En este ejemplo, se precargan tres imágenes. La forma de llamar a esas imagenes, es

la habitual:

Page 132: Preguntas Frecuentes

Código:

<img src="pepito.jpg">

Javascript: RolloverPodemos usar esto, por ejemplo para cambiar la apariencia de un boton. (Normal, sobre y

pulsado)

Esto en el head

Código:

<script>var foto=new Array()foto[0]=new Image()foto[0].src="boton.gif"foto[1]=new Image()foto[1].src="boton_sobre.gif"foto[2]=new Image()foto[2].src="boton_pulsado.gif"</script>

Esto en el body

Código:

<img src="boton.gif" onmouseover="this.src=foto[1].src" onmouseout="this.src=foto[2].src" onclick="this.src=foto[0].src">

onmouseover = encima

onmouseout = fuera

onmousedown = click

Javascript: Cambio de Imágenes automáticoNOTA: El efecto de la transición sólo es visible en IExplorer NOTA2: Es recomendado que las

imágenes tengan todas el mismo tamaño para lograr un mejor efecto en la transición.

Page 133: Preguntas Frecuentes

<script language="javascript"> //Aquí cambia los nombres de las imágenes por las tuyas.var imagenes=new Array() imagenes[0]=new Image (380,288);imagenes[0].src="tibidabo.jpg"imagenes[1]=new Image (399,291);imagenes[1].src="gato.jpg"imagenes[2]=new Image (248,289);imagenes[2].src="paloma.jpg"imagenes[3]=new Image (215,366);imagenes[3].src="perico.jpg" cont=0function presImagen(){if (document.all){document.getElementById('foto').filters.blendTrans.apply()document.getElementById('foto').src=imagenes[cont].srcdocument.getElementById('foto').filters.blendTrans.play()}else { document.images.foto.src = imagenes[cont].src }if (cont < imagenes.length-1){cont ++}else{cont=0}tiempo=window.setTimeout('presImagen()',5000) //cada 5000 milisegundos (5 seg.) cambia la imagen.//cambia la cantidad por el tiempo que quieras que transcurra entre imagen e imagen} </script></head> <body bgcolor="#FFFFFF" text="#000000" onLoad="presImagen()"><img id="foto" src="tibidabo.jpg" style="filter:blendTrans(duration=[b]3[/b])"><!-- la duración de la transición es de 3 segundos. Cambia este valor según tus preferencias --></body>

Page 134: Preguntas Frecuentes

Javascript: Una imagen linkable cada semanaPor medio de este código:

<html><head> <script>//Script original de KarlanKas para Forosdelweb.com var bisiesto=0 //Si es año bisiesto pon 1 enlace=new Array;alt=new Array;imagen=new Array; //-------ENLACES ALT E IMAGEN PARA CADA SEMANA------------ enlace[1]="http://www.loslunesalsol.com/";alt[1]="esta es la imagen del lunes"imagen[1]="http://www.cartelia.net/fotos/l/loslunesalsol.jpg" enlace[2]="http://www.martes.com";alt[2]="esta es la imagen del martes";imagen[2]="http://www.martes.com/images/marteshomesk.gif"; enlace[3]="http://www.wednesday.com";alt[3]="Esta es la imagen del miércoles"imagen[3]="http://www.wednesday.com/images/logo.gif"; enlace[4]="http://www.thursday.com/";alt[4]="Es que en español no había..."imagen[4]="http://www.thursday.com/5.jpg"; enlace[5]="http://www.tgifridays.com/index1.html";alt[5]="No podía ser de otra forma!";imagen[5]="http://www.tgifridays.com/index_files/newindex.gif"; enlace[6]="http://www.sabado.info";alt[6]="Te gusta la música?";imagen[6]="http://www.sabado.info/image/guitar.gif"; //_---------SEGUIR HASTA LA SEMANA 52-------------------------- //----------NO EDITAR A PARTIR DE AQUÍ---------------------var cantidadDeDias=0;var semana=1diaspormes=new Array(31,28+bisiesto,31,30,31,30,31,31,30,31,30,31);

Page 135: Preguntas Frecuentes

hoy=new Date;anio=hoy.getYear()primero=new Date(anio,0,1)diasem=primero.getDay()dia=hoy.getDate();mes=hoy.getMonth();for (a=0;a<mes;a++){cantidadDeDias=cantidadDeDias+diaspormes[a]}cantidadDeDias=cantidadDeDias+dia;for (a=0;a<cantidadDeDias;a++){diasem=diasem+1if (diasem>6){diasem=0;semana=semana+1}}//---------------------------------------------------------</script> </head> <body><script>document.write("<A HREF="+enlace[semana]+"><img src="+imagen[semana]+" ALT='"+alt[semana]+"'></A>");</script></body></html>

Javascript: Cambiar una imagen al hacer un MouseOverCon este código: Ver ejemplo

<html><head><style>A{text-decoration:none;color:#330099;font:bold 10px/15px verdana;}A:HOVER{text-decoration:underline;}</style> <title>Ejemplillo</title> <script> // Quiero agradecer públicamente la gran ayuda de tunait.

Page 136: Preguntas Frecuentes

// Por enseñarme, entre otras muchas cosas, la importancia de la elección de la denominación de variables. // Estas variables pretenden ser una aplicación práctica de tantas conversaciones sobre las mismas. X·D    codigoQueTeAhorrasPicar="";  function crear(a,b,c,d){ this.tezto=a; this.ondeVa=b; this.tieneSuImagensitaYTo=new Image this.tieneSuImagensitaYTo.src=c; if(d){this.queFotoCambio=d} }//unEnlasito=new crear([TEXTO QUE APARECE EN EL ENLACE],[DESTINO DEL ENLACE],[RUTA DE LA IMAGEN],[ID DE LA IMAGEN QUE CAMBIA- SI SE DEJA EN BLANCO SE CAMBIA EL FONDO DE LA PÁGINA]); unEnlasito=new Array; unEnlasito[0]=new crear("Veamos la página de Tunait","http://www.tunait.com","http://www.tunait.com/encuentros/encuentrosb.jpg","macario"); unEnlasito[1]=new crear("Veamos la de Caricatos","http://www.pepemolina.com","http://www.forosdelweb.com/avatar.php?userid=18599&dateline=1037047895"); unEnlasito[2]=new crear("Quieres ver la página de Web Are You?","http://www.karlankas.net","http://www.webareyou.com/logo.jpg"); // fonditoMono=[EL FONDO QUE SE QUIERE PARA LA PÁGINA]   fonditoMono="White url('http://www.klasic.org/img/klasic.jpg') no-repeat fixed center"; //---------------------------------------- NO TOQUES A PARTIR DE AQUI SI NO SABES LO QUE HACES --------------------- for (principio=0;principio<unEnlasito.length;principio++){ codigoQueTeAhorrasPicar=codigoQueTeAhorrasPicar+"<a href="+unEnlasito[principio].ondeVa+" onmouseout='noQuieroVe(unEnlasito["+principio+"])' onmouseover='quieroVe(unEnlasito["+principio+"])'>"+unEnlasito[principio].tezto+"</a><br>"; }  function quieroVe(etoMimamente){ if (etoMimamente.queFotoCambio!=null){ fotilloPaCambia=document.getElementById(etoMimamente.queFotoCambio); fotilloPaCambia.src=etoMimamente.tieneSuImagensitaYTo.src; }

Page 137: Preguntas Frecuentes

else{cuerpoSerrano.style.background="White url("+etoMimamente.tieneSuImagensitaYTo.src+") no-repeat fixed center";} } function noQuieroVe(etoMimamente){ if (etoMimamente.queFotoCambio!=null){ fotilloPaCambia=document.getElementById(etoMimamente.queFotoCambio); fotilloPaCambia.style.visibility="hidden"; } else{cuerpoSerrano.style.background=fonditoMono;} } //----------------------------------- HALE, YA PUEDES TOCAR ----------// </script></head> <body id="cuerpoSerrano" onload="document.getElementById('cuerpoSerrano').style.background=fonditoMono"> <script>document.write(codigoQueTeAhorrasPicar)</script> <!-- ESTAS IMAGENES SON DE PRUEBA. 'TUNAIT' CAMBIA LA FOTO MACARIO. SI ESTAS IMAGENES TIENEN CONTENIDO DESDE EL PRINCIPIO QUITA EL ONLOAD Y EL STYLE----> <img id=pepe style="visibility:hidden" onLoad="this.style.visibility='visible'"><br> <img id=juan style="visibility:hidden" onLoad="this.style.visibility='visible'"><br> <img id=macario style="visibility:hidden" onLoad="this.style.visibility='visible'"><br> </body></html>

Javascript: Imágenes en miniaturaCon este código:

<html><head><script>

Page 138: Preguntas Frecuentes

function minifoto(foto,H,V,ancho,alto) { propH = ancho / H; propV = alto / V; if (propH>propV) { anchoF = H * propV; altoF = alto; } else { altoF = V * propH; anchoF = ancho; } de = (ancho - anchoF) / 2; su = (alto - altoF) /2; imagen="<div style='width:"+ancho+";height:"+alto+";border:1px outset'>"; imagen+="<img src='"+foto+"' widht="+anchoF+" height="+altoF; imagen+=" style='position:relative; left:"+de+";top:"+su+"'>"; imagen+="</div>"; document.write(imagen); }</script></head> <body><script> minifoto("foto.jpg",399,291,90,80);</script></body></html>

A la función minifoto se pasan: el nombre de la imagen, el ancho y alto real de la imagen y el

ancho y alto en el que se quiere poner la imagen. La función "encaja" la imagen en un recuadro

manteniendo las proporciones.

Nota: Me recuerda el amigo Bravenap, que aunque la imagen aparece en tamaño reducido, se

descarga completa, es decir, con su tamaño real, por lo que no supone reducción del tiempo de

descarga. Deberá tenerse esto en cuenta si se quiere utilizar este código con imágenes muy

grandes o con muchas imágenes.

Javascript: Rotador de bannerProbado en: IE 5+, Netscape 7, Opera 7, Firefox 1Ejemplo

Código:

<script>// Rotador de banner's . Carlitos. [email protected]

Page 139: Preguntas Frecuentes

 var ban = new Array()var enl = new Array()var indice = 0 ban[0] = new Image()ban[0].src = "mdw.gif"enl[0] = "http://www.maestrosdelweb.com" ban[1] = new Image()ban[1].src = "faq.gif"clara[1] = "http://www.faqsdelweb.com" ban[2] = new Image()ban[2].src = "script.gif"enl[2] = "http://www.webtutorial.com.ar/scriptmaster/" ban[3] = new Image()ban[3].src = "webest.gif"enl[3] = "http://www.webestilo.com" function rota(){if (indice == ban.length) indice = 0 if (document.images) { document.images.fotico.src = ban[indice].src }else { document.getElementById('fotico').src=ban[indice].src }indice++setTimeout('rota()',2000)}function vete(){window.open(enl[indice-1])}</script><body onload=rota()><img src="" id="fotico" onclick="vete()">

Javascript: Previsualizar una imagen antes de subirlaSI:

Page 140: Preguntas Frecuentes

<p>Selecciona una imagen</p><input type="file" onChange="document.imagen.src='file:///' + this.value"><br><br>Vista previa:<br><br><img src="imagenpordefecto.gif" name="imagen">

Ejemplo

Nota: sólo funcionará en Internet Explorer

Javascript: Pequeño álbum de fotosCréditos: Bravenet

Para este script ten en cuenta lo siguiente:

Si vas a emplear más de 3 imágenes, cambia la siguiente línea... if (document.images &&

thisImage < 2) por el número de imagenes que vayas a usar

Código:

<script language="JavaScript"><!--var viewPix = new Array("http://www.tusitio.com/tuimagen.png","http://www.tusitio.com/tuimagen2.png","http://www.tusitio.com/tuimagen3.png") var thisImage = 0  function doPast() {if (document.images && thisImage > 0) {thisImage--document.myShow.src=viewPix[thisImage]}}function doAfter() {if (document.images && thisImage < 2) {thisImage++document.myShow.src=viewPix[thisImage]}}// -->

Page 141: Preguntas Frecuentes

</script><div align="center"><img name="myShow" src="http://www.tusitio.com/tuimagen.png" width="468" height="60"><br><a href="javascript:doPast()">Anterior</a> <a href="javascript:doAfter()">Siguiente</a></div>

Espero que nos veamos pronto Salu2

Javascript: ¿Cómo hacer una precarga viendo el porcentaje de carga?Para llevar el control de las imágenes que se cargan en memoria existe la propiedad

"complete" que indica si están completamente cargadas. Estas tres funciones sirven para ese

control:

function precargar() { var dibujos = new Array(precargar.arguments.length); for (var i = 0; i < dibujos.length; i ++) { dibujos[i] = new Image(); dibujos[i].src = precargar.arguments[i] } return dibujos;} function precargados(dibujos) { var parciales = true; for (var i = 0; i < dibujos.length; i ++) parciales = (parciales && dibujos[i].complete); return parciales;} function porciento(dibujos) { var parciales = 0; for (var i = 0; i < dibujos.length; i ++) parciales += (dibujos[i].complete) ? 1 : 0; return parseInt(100 * parciales / dibujos.length);} </php> La idea es hacer un chequeo del estado de carga (precargados) y mostrar el porcentaje (porciento) que es fácilmente aplicable al estilo "width" de una capa. Por ejemplo: 

Page 142: Preguntas Frecuentes

<source lang="javascript">var imagenes;function continuar() { alert("Ok.");} function cargando() { document.getElementById("estado").style.width = porciento(imagenes) + "%"; if (precargados(imagenes)) continuar(); else setTimeout("cargando()", 100);} function ini() { imagenes = new precargar("img0.jpg", "img1.jpg", "img2.jpg", "img3.jpg", "img4.jpg", "img5.jpg", "img6.jpg", "img7.jpg", "img8.jpg" ); cargando();}

Donde pone continuar(), puede cambiarse el alert por cualquier otra cosa como por ejemplo

una activación de un botón o un efecto rollover.

Y el código de la página tendría que tener un elemento con id="estado" para mostrar el

porcentaje Por ejemplo:

<div style="position:relative; width: 100px; height: 20px; border: 1px" > <div style="position:absolute; top: 0; left: 0; width:100%; height: 100%; background-color: blue" > </div> <div id="estado" style="position:absolute; top: 0; left: 0; width: 1%; height: 100%; background-color: aqua" > </div>

Page 143: Preguntas Frecuentes

 </div>

Se activaría con un evento como la carga de la página: <body onload="ini()">

Menúes

Javascript: Navegar con un menú desplegable(Redirigido desde Navegar con un menú desplegable)

P.- ¿Cómo puedo cambiar de página segun la opción elegida en un <select>?

<select name="select" onChange="location.href=this.value"> <option value="paginauno.html">Pagina 1</option> <option value="paginados.html">Pagina 1</option> <option value="paginatres.html">Pagina 1</option></select>

Javascript: Menú de salto con la opción de abrirlo en una nueva ventana(Redirigido desde Menú de salto con la opción de abrirlo en una nueva ventana)

Menú de salto con la opción de abrirlo en una nueva ventana

<html><head><script language="javascript"><!--function skip(){var tickit=document.optionformif (tickit.chooseit.checked){if (!window.newwindow)newwindow=window.open("")newwindow.location=tickit.test.options[tickit.test.selectedIndex].value}else

Page 144: Preguntas Frecuentes

location=tickit.test.options[tickit.test.selectedIndex].value}//--></script></head> <body><form name="optionform"><select name="test" size=1 style="font:bold 11px verdana;background-color:#DAE6F8;color:#000000;"> <option value="http://www.epa2.com">Epa2</option> <option value="http://www.terra.es">Hola amigos</option> <option value="http://www.mp3.com">Adiós amigos</option>

<option value="http://www.caricatos.com">Saludos a los señores del anillo de los foros</option> </select><br> <input type="checkbox" name="chooseit" value="ON"><span style="font:11px verdana;">Abrir en nueva ventana pecador.</span><br> <input type="button" value="Vamos a por ellos" onClick="skip()" style="font:bold 11px verdana;background-color:#DAE6F8;color:#cc0000;"></form></body></html>

Navegación

Javascript:¿Cómo puedo deshabilitar el uso del botón derecho dentro de mi página?[ver ejemplo]

La siguiente solución fue tomada originalmente por kitipaloco deDynamicDrive.com y probada

por el equipo de contestones del Foro de JavaScript con los siguientes resultados:

Funciona bajo:

- Internet Explorer 5.0, 6.0

- Netscape 6.2, 7.0

- Mozilla 1.3a

No funciona bajo:

Page 145: Preguntas Frecuentes

- Opera 6.01

<html> <head> <script language="JavaScript"> //Disable right click script III- By Renigade ([email protected]) //For full source code, visit [url]http://www.dynamicdrive.com[/url] var message = "";   function clickIE(){ if (document.all){ (message); return false; } }   function clickNS(e){ if (document.layers || (document.getElementById && !document.all)){ if (e.which == 2 || e.which == 3){ (message); return false; } } }   if (document.layers){ document.captureEvents(Event.MOUSEDOWN); document.onmousedown = clickNS; } else { document.onmouseup = clickNS; document.oncontextmenu = clickIE; } document.oncontextmenu = new Function("return false") </script> </head> <body> Script para eliminar el botón derecho. </body> </html>

Page 146: Preguntas Frecuentes

Javascript:¿Cómo puedo pasar parámetros entre dos páginas usando JavaScript?[ver ejemplo]

Programa principal (principal.htm)

<html> <head> <script language="JavaScript"> function disparaPopUp(str){ open("popup.htm?Prm=" + str); } </script> </head> <body> <form name="formulario"> Valor a ser transmitido:<input type="text" name="texto"> <input type="button" name="boton" value="Transmitir" onclick="disparaPopUp(document.formulario.texto.value)"> </form> </body> </html>

Página popUp que recibe parámetros (popup.htm)

<html> <head> <script languaje="JavaScript">   var parmetro; // Nombre de la variable que va a recibir el valor   function valParam(url, prmName){ var prmUpper = prmName.toUpperCase(); var prmPosic = url.indexOf(prmUpper); var sepPos; if (prmPosic != -1){ var sepPos = url.indexOf("&", prmPosic); if (sepPos != -1){ return url.substring(prmPosic + prmUpper.length + 1, sepPos); } else { return url.substring(prmPosic + prmUpper.length + 1, url.length); } } else { return ""; }

Page 147: Preguntas Frecuentes

}   function getParameters(){ var remplaza = /+/gi; var url = window.location.href; var variable; url = unescape(url); url = url.replace(remplaza, " "); url = url.toUpperCase(); parametro = valParam(url, "Prm"); // Lectura y asignación del valor }   function muestra(){ document.frm.parm.value = parametro; }   </script> </head> <body onload="getParameters()"> <form name="frm"> <input type="text" name="parm"> <input type="button" value="Leer parámetro" onclick="muestra()"> </form> </body> </html>

Javascript:¿Se puede crear una alerta con opciones de Ok y Cancelar?<html> <head> <script language="Javascript"> function preguntar(){ confirmar=confirm("¿Eres mayor de edad?"); if (confirmar) //Aquí pones lo que quieras si da a Aceptar alert('Diste a Aceptar') else //Aquí pones lo que quieras Cancelar alert('Diste a Cancelar') } </script> </head> <body> <a href="java script:preguntar()">Cuidao que muerdo</a> </body>

Page 148: Preguntas Frecuentes

</html>

Javascript:¿Cómo puedo redireccionar mi página a otras dependiendo de la resolución del browser del cliente?<html> <head> <script language="JavaScript"> function redireccionar() { var url640x480 = "http://www.tu-sitio.com/640x480"; var url800x600 = "http://www.tu-sitio.com/800x600"; var url1024x768 = "http://www.tu-sitio.com/1024x768"; var nWdt = screen.width; var nHgh = screen.height; if ((nWdt == 640) && (nHgh == 480)) window.location.href= url640x480; else if ((((nWdt == 800) && (nHgh == 600)) window.location.href= url800x600; else if ((nWdt == 1024) && (nHgh == 768)) window.location.href= url1024x768; else window.location.href= url640x480; } </script> </head> <body onLoad="redireccionar()"> </body> </html>

Javascript:¿Cómo redireccionar a una página?Entre el <HEAD> y el </HEAD> de tu página debes poner lo siguiente:

Código:

<META HTTP-EQUIV="Refresh" CONTENT="@;URL=http://www.tusitioweb.com">

Page 149: Preguntas Frecuentes

Javascript:¿Cómo evitar que tu página se cargue en un frame externo?Poniendo esto en el <head> de tu página.

Código:

<script>if (parent.frames.length > 0) parent.location.href = self.document.location</script>

Javascript:¿Cómo cargar el frame principal si acceden directamente a una de mis páginas secundarias?Poniendo esto en el <head> de tus páginas secundarias.

Código:

<script>if(top==self) top.location="index.htm"</script>

Donde index.htm, es el nombre de tu página principal.

_

Javascript:¿Cómo se puede manipular mediante JavaScript los botones "Atrás", "Adelante" y "Recargar" del navegador?[ver ejemplo]

Page 150: Preguntas Frecuentes

<html> <head> </head> <body> <b>Manipular una páginia individual o frame actual</b><br> <a href="javascript:history.reload()">Recargar esta página o frame</a><br> <a href="javascript:history.back()">Ir a página (o frame) anterior</a><br> <a href="javascript:history.forward()">Ir a página (o frame) siguiente</a><br><br> <b>Manipular un frame vecino</b><br> <a href="javascript:parent.frames[2].history.reload()">Recargar un frame vecino</a><br> <a href="javascript:parent.frames[2].history.back()">Ir a frame vecino anterior</a><br> <a href="javascript:parent.frames[2].history.forward()">Ir a frame vecino siguiente</a><br><br> <b>Manipular un frame vecino usando su nombre</b><br> <a href="javascript:parent.nombreDelFrame.history.reload()">Recargar un frame vecino (por nombre)</a><br> <a href="javascript:parent.nombreDelFrame.history.back()">Ir a frame vecino anterior (por nombre)</a><br> <a href="javascript:parent.nombreDelFrame.history.forward()">Ir a frame vecino siguiente (por nombre)</a><br><br> </body> </html>

Javascript:¿Cómo puedo detectar los plugins de Flash, Shockwave, Live audio, Netscape Media Player, Quick time?<script language="JavaScript"> <!-- function MM_checkPlugin(plgIn, theURL, altURL, autoGo) { var ok=false; document.MM_returnValue = false; with (navigator) if (appName.indexOf('Microsoft')==-1 || (plugins && plugins.length)) { ok=(plugins && plugins[plgIn]); } else if (appVersion.indexOf('3.1')==-1) { if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null) ok=window.MM_flash;

Page 151: Preguntas Frecuentes

else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null) ok=window.MM_dir; else ok=autoGo; } if (!ok) theURL=altURL; if (theURL) window.location=theURL; } //--> </script> </head>  <body bgcolor="#FFFFFF" text="#000000" onLoad="MM_checkPlugin('Shockwave Flash','index.html','http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&amp;Lang=LatinAmerica&amp;P5_Language=Spanish',true);return document.MM_returnValue">

P¿Cómo detecto shockwave player?

R

<script language="JavaScript"> <!-- function MM_checkPlugin(plgIn, theURL, altURL, autoGo) { //v4.0 var ok=false; document.MM_returnValue = false; with (navigator) if (appName.indexOf('Microsoft')==-1 || (plugins && plugins.length)) { ok=(plugins && plugins[plgIn]); } else if (appVersion.indexOf('3.1')==-1) { //not Netscape or Win3.1 if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null) ok=window.MM_flash; else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null) ok=window.MM_dir; else ok=autoGo; } if (!ok) theURL=altURL; if (theURL) window.location=theURL; } //--> </script> </head>  <body bgcolor="#FFFFFF" text="#000000" onLoad="MM_checkPlugin('Shockwave for Director','index.html','http://www.macromedia.com/shockwave/download/download.cgi?Lang=LatinAmerica&amp;P5_Language=Spanish',true);return document.MM_returnValue">

P ¿Cómo detecto live audio?

R

Page 152: Preguntas Frecuentes

<script language="JavaScript"> <!-- function MM_checkPlugin(plgIn, theURL, altURL, autoGo) { //v4.0 var ok=false; document.MM_returnValue = false; with (navigator) if (appName.indexOf('Microsoft')==-1 || (plugins && plugins.length)) { ok=(plugins && plugins[plgIn]); } else if (appVersion.indexOf('3.1')==-1) { //not Netscape or Win3.1 if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null) ok=window.MM_flash; else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null) ok=window.MM_dir; else ok=autoGo; } if (!ok) theURL=altURL; if (theURL) window.location=theURL; } //--> </script> </head>  <body bgcolor="#FFFFFF" text="#000000" onLoad="MM_checkPlugin('LiveAudio','index.html','http://www.live-audio.com/',true);return document.MM_returnValue">

P¿Cómo detecto Netscape Media Player?

R

<script language="JavaScript"> <!-- function MM_checkPlugin(plgIn, theURL, altURL, autoGo) { //v4.0 var ok=false; document.MM_returnValue = false; with (navigator) if (appName.indexOf('Microsoft')==-1 || (plugins && plugins.length)) { ok=(plugins && plugins[plgIn]); } else if (appVersion.indexOf('3.1')==-1) { //not Netscape or Win3.1 if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null) ok=window.MM_flash; else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null) ok=window.MM_dir; else ok=autoGo; } if (!ok) theURL=altURL; if (theURL) window.location=theURL; } //--> </script> </head>  <body bgcolor="#FFFFFF" text="#000000" onLoad="MM_checkPlugin('Netscape Media Player','index.html','http://rc.lrs.lt:8080/n/media/nmplaydn.html',true);return document.MM_returnValue">

Page 153: Preguntas Frecuentes

P¿Cómo detecto quick time?

R

<script language="JavaScript"> <!-- function MM_checkPlugin(plgIn, theURL, altURL, autoGo) { //v4.0 var ok=false; document.MM_returnValue = false; with (navigator) if (appName.indexOf('Microsoft')==-1 || (plugins && plugins.length)) { ok=(plugins && plugins[plgIn]); } else if (appVersion.indexOf('3.1')==-1) { //not Netscape or Win3.1 if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null) ok=window.MM_flash; else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null) ok=window.MM_dir; else ok=autoGo; } if (!ok) theURL=altURL; if (theURL) window.location=theURL; } //--> </script> </head>  <body bgcolor="#FFFFFF" text="#000000" onLoad="MM_checkPlugin('QuickTime Plug-In','index.html','http://www.apple.com/quicktime/download/',true);return document.MM_returnValue">

Javascript:¿Cómo ejecutar un script al entrar en una página?Onload [Ejemplo]

Añadiendo el evento onLoad a la etiqueta <body>

Ejemplo:

Código:

<head><script>function entrada(){alert("Hola!!")}</script></head><body onLoad="entrada()">

Page 154: Preguntas Frecuentes

...

...</body>

Javascript:¿Cómo ejecutar un script al salir de una página?Onunload [Ejemplo]

Añadiendo el evento onUnload a la etiqueta <body>

Ejemplo:

Código:

<head><script>function salida(){alert("Adios!!")}</script></head><body onUnload="salida()">......</body>

Javascript:¿Cuál es el esquema usado para identificar un usuario registrado en una página?[ver ejemplo]

Aunque la identificación de un usuario es un problema que debe atenderse en el lado del

servidor usando PHP o ASP o JSP, hay también una porción del código que debe hacerse del

lado del cliente usando JavaScript.

Page 155: Preguntas Frecuentes

El siguiente esquema es una "simulación" del proceso de validación, que pasa como parámetro

el nombre del usuario. En una solución real, dicho usuario debe ser registrado en una variable

del lado del servidor o una cookie.

Login0.htm

<html> <head> <script language="JavaScript">   var usuario = "";   function valParam(url, prmName){ var prmUpper = prmName.toUpperCase(); var prmPosic = url.indexOf(prmUpper); var sepPos; if (prmPosic != -1){ var sepPos = url.indexOf("&", prmPosic); if (sepPos != -1){ return url.substring(prmPosic + prmUpper.length + 1, sepPos); } else { return url.substring(prmPosic + prmUpper.length + 1, url.length); } } else { return ""; } }   function getParameters(){ var remplaza = /+/gi; var url = window.location.href; var variable; url = unescape(url); url = url.replace(remplaza, " "); url = url.toUpperCase(); usuario = valParam(url, "Usr"); }   function popup(){ open("login1.htm"); }   function salir(){ location.href = "login0.htm?Usr=."; } </script> </head> <body> <form name="frm">

Page 156: Preguntas Frecuentes

<table border="0" width="100%"> <tr> <td width="100%" align="right"> <script language="JavaScript"> getParameters(); if (usuario == "" || usuario == "."){ document.write("<a href='#' onclick='popup()'>Conectarse</a>"); } else { document.write("Hola " + usuario + "&nbsp;"); document.write("<a href='login0.htm?Usr='>Desconectarse</a>"); } </script> </td> </tr> </table> </form> </body> </html>

Login1.htm

<html> <head> <script language="JavaScript"> function reposiciona(){ var ancho = screen.width; var alto = screen.height; resizeTo(300, 250); moveTo((ancho - 300) / 2, (alto - 250) / 2); }   function entrar(){ opener.location.href = "login0.htm?Usr=" + document.form2.nomb.value; close(); } </script> </head> <body onload="reposiciona()"> <form name="form2"> <table border="0"> <tr> <td align="right"> Nombre: </td> <td> <input type="text" name="nomb"><br> </td> </tr>

Page 157: Preguntas Frecuentes

<tr> <td align="right"> Clave: </td> <td> <input type="password" name="key"><br> </td> </tr> <tr> <td align="center" colspan="2"> <input type="button" value="Login" onclick="entrar()"> </td> </tr> </form> </body> </html>

Javascript:¿Cómo puedo mediante un botón, un link o una letra presionada en un área de texto, hacer un salto a una etiqueta interna dentro de mi página?[ver ejemplo]

<html> <head> <script language="JavaScript">   function salta(sChar){ location.href = "#" + sChar; }   function procesa(){ if(window.event.keyCode == 65) salta("a"); if(window.event.keyCode == 66) salta("b"); if(window.event.keyCode == 67) salta("c"); if(window.event.keyCode == 68) salta("d"); if(window.event.keyCode == 69) salta("e"); }   </script> </head>

Page 158: Preguntas Frecuentes

<body> <form name="frm"> <table border="0"> <tr> <td> <a href="#a">A</a> <a href="#b">B</a> <a href="#c">C</a> <a href="#d">D</a> <a href="#e">E</a> </td> <td> <input type="button" value="A" onclick="salta('a')"> <input type="button" value="B" onclick="salta('b')"> <input type="button" value="C" onclick="salta('c')"> <input type="button" value="D" onclick="salta('d')"> <input type="button" value="E" onclick="salta('e')"> </td> <td> <input type="text" onKeyUp="procesa()"> </td> </tr> </table> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <a name="a"></a>Letra A: <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <a name="b">Letra B: <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <a name="c">Letra C: <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <a name="d">Letra D: <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <a name="e">Letra E: </form> </body> </html>

Page 159: Preguntas Frecuentes

Javascript:¿Cómo hacer que un enlace apunte a una página alternativa si la primera está caida?Con este código: Ver Ejemplo

<html> <head> <title>Redirección selectiva</title> <style> #enlace{ cursor:hand; } </style> <script>  //Script original de KarlanKas para forosdelweb.com  var imagenPrimera=new Image; var imagenSegunda=new Image;  imagenPrimera.src="http://80.24.56.172/karlankas.jpg"; //La imagen primera tiene que estar en el servidor donde esté direcciónPrimera imagenSegunda.src="http://www.arquo.com/Imagenes/logotipo.jpg";  direccionPrimera="http://80.24.56.172"; direccionSegunda="http://www.arquo.com";   direccion=direccionPrimera;  function unError(imag){ imag.src=imagenSegunda.src; direccion=direccionSegunda } </script> </head> <body> <center> <div id="cuerpo"></div> <script>  codigo="<img id='enlace' src='"+imagenPrimera.src+"' onError='unError(this)' onClick='location.replace(direccion);'>"

Page 160: Preguntas Frecuentes

cuerpo.innerHTML=codigo </script> <br> </center> </body> </html>

Javascript:¿Cómo puedo lograr que si alguien llega a una sección de mi sitio sin cargar los frames, ésta se redirija a la estructura de marcos cargando por defecto dicha sección?Redireccionar una página a su estructura de marcos cargando por defecto dicha pág.

Habrá que crear la estructura de frames de forma dinámica mediante document.write. Este

ejemplo es para una estructura de 2 frames. Si se quieren más frames es sólo cuestión de

pedir al script que te los escriba de la misma forma que el resto.

Página de frames frames.htm

<html> <head> <title>Página de Marcos</title> <script language="javascript"> //###script por tunait  cadena=document.location.search.substring(1,location.search.length); cadena2=cadena.split('=') pagina=cadena2[1] if (pagina==null) { pagina='principal.htm' } document.write('<frameset rows="80,*" frameborder="YES" border="1" framespacing="1" cols="*">') document.write(' <frame name="arriba" scrolling="NO" noresize src="arriba.htm" >') document.write('<frame name="principal" src="' + pagina + '">') document.write ('</frameset>') </script>

Page 161: Preguntas Frecuentes

</head> <noframes> <body bgcolor="#FFFFFF" text="#000000"> </body> </noframes> </html>

...y el siguiente código habrá que añadirlo en algún lugar entre los tags <head> y </head> a

todas las páginas (secciones) que hayan de cargarse dentro del frame principal:

<script language="javascript"> url=this.location.pathname if(top==self) top.location="frames.htm?url=" + url </script>

Javascript:¿Cómo puedo mostrar la resolución de la pantalla del usuario y con un simple enlace redireccionarle a la página apropiada?<html> <head> <script> var res, url if ((screen.width == 800) && (screen.height == 600)){ res="800x600" url="800x600.htm"} else if ((screen.width == 1024) && (screen.height == 768)){ res="1024x768"; url="1024x768.htm"} else if ((screen.width == 1152) && (screen.height == 864)){ res="1152x864"; url="1152x864.htm"} else if ((screen.width == 1280) && (screen.height == 1024)){ res="1280x1024"; url="1280x1024.htm"} else{ window.location.href = "otra.htm"} function Entrar(){ window.location.href=url} </script> </head> <body>

Page 162: Preguntas Frecuentes

Tu Resolución de Pantalla es: <b><script>document.write(res)</script></b><br> <a href="javascript:Entrar()">Acceda a la página correspondiente a tu resolución</a> </body> </html>

Javascript:¿Cómo puedo redireccionar una página a otra pasados unos segundos?<html> <head> </head>  <body style="font:bold 10px/15px verdana;color:navy"> <script> //Script original de KarlanKas para forosdelweb.com   var segundos=3 var direccion='http://www.webareyou.com' var mensaje="Nos hemos trasladado."  milisegundos=segundos*1000 window.setTimeout("window.location.replace(direccion);",milisegundos); document.write(mensaje+" Si pasados "+segundos+ " segundos no es redireccionado pinche <a href='"+direccion+"'>aquí</a>."); </script>  </body> </html>

__

Javascript:¿Cómo pongo un buscador Web en mi sitio?Créditos: No me acuerdo de donde lo bajé pero ahí pongo el autor. / Script by Jari Aarniala

[www.mbnet.fi/~foo -- [email protected]]

Page 163: Preguntas Frecuentes

Ver ejemplo: Pulsa aqui pecadoooorr

NOTA: Si este script estuviese repe, favor de hacermelo saber. Gracias.

Código:

<body><tr> <td width="100%"> <p align="center">&nbsp;</td></tr><tr> <td width="100%">&nbsp;</td> </tr> <tr> <td width="100%" style="text-indent: 0" height="19"> <span lang="es"><script language="JavaScript"><!-- //// Script by Jari Aarniala [www.mbnet.fi/~foo -- [email protected]]//// This script makes it easy to choose with which search engine// you`d like to search the net. You may use this if you keep this// text here...// function startSearch(){searchString = document.searchForm.searchText.value; if(searchString != ""){searchEngine = document.searchForm.whichEngine.selectedIndex + 1;finalSearchString = ""; if(searchEngine == 1){finalSearchString = "http://www.altavista.digital.com/cgi-bin/query?pg=q&what=web&fmt=.&q=" + searchString;}if(searchEngine == 2){finalSearchString = "http://av.yahoo.com/bin/query?p=" + searchString + "&hc=0&hs=0";}if(searchEngine == 3){finalSearchString = "http://www.excite.com/search.gw?trace=a&search=" + searchString;}if(searchEngine == 4){finalSearchString = "http://www.hotbot.com/?SW=web&SM=MC&MT=" + searchString + "&DC=10&DE=2&RG=NA&_v=2&act.search.x=89&act.search.y=7";}if(searchEngine == 5){

Page 164: Preguntas Frecuentes

finalSearchString = "http://www.infoseek.com/Titles?qt=" + searchString + "&col=WW&sv=IS&lk=noframes&nh=10";}if(searchEngine == 6){finalSearchString = "http://www.lycos.com/cgi-bin/pursuit?adv=%26adv%3B&cat=lycos&matchmode=and&query=" + searchString + "&x=45&y=11";}if(searchEngine == 7){finalSearchString = "http://netfind.aol.com/search.gw?search=" + searchString + "&c=web&lk=excite_netfind_us&src=1";} location.href = finalSearchString;}}  // --> </script> <basefont face="Verdana, Arial, sans-serif"> </span> <form name="searchForm"> <div align="center"> <center> <table width=323 border="2" cellpadding=3 cellspacing=0 bgcolor=444444 style="border-collapse: collapse" bordercolor="#111111"> <tr><td bgcolor=lightblue width="148"><font size="1"><span lang="es">Buscar por:</span></font><font size=1 face="Verdana, Arial, sans-serif"><span lang="es"><br> </span><td bgcolor=lightblue width="96"><font size="1"><span lang="es">Buscar desde:</span></font><span lang="es"><td bgcolor=lightblue width="90">  <tr><td bgcolor=navajowhite width="148"><input style="background: dddddd" name="searchText" type="text" size="20"><td bgcolor=navajowhite width="96"><select style="background: dddddd" name="whichEngine"><option selected>Altavista<option>Yahoo!<option>Excite<option>Hotbot

Page 165: Preguntas Frecuentes

<option>Infoseek<option>Lycos<option>AOL Netfind</select><td bgcolor=navajowhite width="90"><input type="button" value="Buscar " onClick="startSearch()"> </select></table> </center></div></form> </span>&nbsp;</td> </tr></body></html>

_

Javascript:¿Cómo conseguir que no funcione el botón atrás del navegador?Con este código, que debes poner en la página anterior, por lo que sólo podrás evitar que

vuelva atrás si la página anterior es tuya.

<script> //Script original de KarlanKas para forosdelweb.com  // /////////////// EN EL HEAD ///////////////////  if (history.forward(1)){location.replace(history.forward(1))}  </script>

__

Javascript:Botones de indicación de navegaciónMe gustaría saber cómo puedo hacer para que además de que mis botones cambien de

imagen cuando paso por encima con el ratón (de imagen A a Imagen B), también cambie a una

tercera imagen diferente cuando hago ‘clic’ con el ratón sobre el botón, y que permanezca así

Page 166: Preguntas Frecuentes

hasta que pinche con el ratón en otra opción diferente del menú, momento en el que el enlace

anteriormente abierto debe volver a la imagen A.

R.- Con este código:

<html> <head>   <script> //Script original de KarlanKas para forosdelweb.com var imagen=new Array; imagen[0]=new Image; imagen[0].no=new Image(); imagen[0].pincha=new Image(); imagen[0].si=new Image();   imagen[1]=new Image; imagen[1].no=new Image(); imagen[1].pincha=new Image(); imagen[1].si=new Image();   imagen[2]=new Image; imagen[2].no=new Image(); imagen[2].pincha=new Image(); imagen[2].si=new Image();   imagenAnterior=new Image;   var numeroAnterior=0 //--------- PON AQUÍ LA RUTA DE LAS IMÁGENES (NO HAN DE SER ABSOLUTAS)---------------   imagen[0].no.src="no.gif"; imagen[0].pincha.src="hazclick.gif"; imagen[0].si.src="si.gif";   imagen[1].no.src="no1.gif"; imagen[1].pincha.src="hazclick1.gif"; imagen[1].si.src="si1.gif";   imagen[2].no.src="no2.gif"; imagen[2].pincha.src="hazclick2.gif"; imagen[2].si.src="si2.gif";    //------------------------------------------------------------------------------------ function cliqueo(esto,numero){ imagenAnterior.src=imagen[numeroAnterior].no.src; imagenAnterior=esto;

Page 167: Preguntas Frecuentes

numeroAnterior=numero esto.src=(esto.src!=imagen[numero].si.src)?imagen[numero].si.src:imagen[numero].no.src; }   </script> </head>  <body> <a onfocus="this.blur()" href=#> <img border=0 src="no.gif" onclick="cliqueo(this,0)" onmouseover="if (this.src==imagen[0].no.src){this.src=imagen[0].pincha.src}" onmouseout="if (this.src==imagen[0].pincha.src){this.src=imagen[0].no.src}" > </a>  <a onfocus="this.blur()" href=#> <img border=0 src="no1.gif" onclick="cliqueo(this,1)" onmouseover="if (this.src==imagen[1].no.src){this.src=imagen[1].pincha.src}" onmouseout="if (this.src==imagen[1].pincha.src){this.src=imagen[1].no.src}" > </a>  <a onfocus="this.blur()" href=#> <img border=0 src="no2.gif" onclick="cliqueo(this,2)" onmouseover="if (this.src==imagen[2].no.src){this.src=imagen[2].pincha.src}" onmouseout="if (this.src==imagen[2].pincha.src){this.src=imagen[2].no.src}" > </a> </body> </html>

_

Page 168: Preguntas Frecuentes

Javascript:¿Cómo mostrar 4 imagenes de la BDs para luego hacer navegación con MouseOver?<head> <script>  function changeimage(towhat,url){ if (document.images){ document.images.targetimage.src=towhat.src gotolink=url } } function warp(){ window.location=gotolink }  </script>  <script language="JavaScript1.1"> var myimages=new Array() var gotolink="#"  function preloadimages(){ for (i=0;i<preloadimages.arguments.length;i++){ myimages[i]=new Image() myimages[i].src=preloadimages.arguments[i] } } </script> </head>  Esto dentro del body para la precarga de las imagenes:   <script> preloadimages("<%=rs("foto1")%>","<%=rs("foto2")%>","<%=rs("foto3")%>","<%=rs("foto4")%>") </script>   Aquí va la imagen más grande que será reemplazada por las de abajo cuando se haga el mouseover: ponerla donde quiera  <a href="javascript:warp()"><img src="<%= rs("foto1") %>" name="targetimage" border=0 width=175 height=200></a>  Y esto donde van las imágenes para hacer el mouse over:

Page 169: Preguntas Frecuentes

 <td><a href="verfoto.asp?id=<%=rs("id")%>" onMouseover="changeimage(myimages[0],this.href)"> <img src="<%=rs("foto1") %>" border=0 width="36" height="41"></a></td>  <td><a href="verfoto.asp?id=<%=rs("id")%>" onMouseover="changeimage(myimages[1],this.href)"> <img src="<%= rs("foto1") %>" border=0 width="36" height="41"></a></td>  <td><a href="verfoto.asp?id=<%=rs("id")%>" onMouseover="changeimage(myimages[2],this.href)"> <img src="<%= rs("foto1") %>" border=0 width="36" height="41"></a></td>  <td><a href="verfoto.asp?id=<%=rs("id")%>" onMouseover="changeimage(myimages[3],this.href)"> <img src="<%= rs("foto1") %>" border=0 width="36" height="41"></a></td>

__

Javascript:¿Cómo puedo forzar que el usuario entre siempre por mi página principal (index.htm) y no por mis páginas secundarias si NO utilizo marcos (frames)?En el HEAD de la página secundaria a la que no quieres que entren sin pasar por index.htm:

<script language="JavaScript"> function redireccionar() { var origen = document.referrer; if (origen!="http://tuweb/index.htm") window.location.href= "index.htm"; } </script>

Y en el BODY de esa misma página, poner al principio del todo:

<body onactivate="redireccionar()">

Page 170: Preguntas Frecuentes

Notas: el valor de la variable origen debe ser la URL completa incluyendo la página "de

control", y el `window.location.href apunta a "index.htm" directamente porque la página que

contiene el script se encuentra en el mismo directorio que "index.htm". Si no es así, poner la

ruta.

Salu2 y gracias a Kaopectate por la "pista clave" .

Javascript:¿Cómo puedo abrir la página principal de mi sitio sin barra de herramientas, sin barra de estado, sin menú y sin barra de direcciones?El truco consiste en abrir una página intermedia que dispare un popup con las características

que necesites y luego hacer que esa ventana intermedia se cierre sola. Para ello usamos una

combinación del FAQ-7 y el FAQ-115.

Nota: La página principal propiamente dicha estaría en index1.htm

<html> <head> <script language="JavaScript">   function abreSinNavegacion(){ open('index1.htm', 'principal', 'location=no,menubar=no,status=no,toolbar=no'); cerrar(); }   function cerrar() { var ventana = window.self; ventana.opener = window.self; ventana.close(); }   </script> </head> <body onload="abreSinNavegacion()"> </body> </html>

Page 171: Preguntas Frecuentes

Javascript:¿Cómo puedo poner una barra que me indique que la página esta siendo cargada?Para hacerlo, debemos incorporar el siguiente código dentro de las etiquetas <head> y

</head>:

<html> <head> <title>Título</title> <div ID="waitDiv" style="position:absolute;left:300;top:300;visibility:hidden"> <table cellpadding="6" cellspacing="0" border="1" bgcolor="#000000" bordercolor="#FFFFFF"> <tr><td align=center> <font color="#ffffff" face="Verdana" size="4">Cargando página...</font> <img src="/images/cargando.gif" border="1"> </td> </tr></table> </div> <SCRIPT> <!-- var DHTML = (document.getElementById || document.all || document.layers); function ap_getObj(name) { if (document.getElementById) { return document.getElementById(name).style; } else if (document.all) { return document.all[name].style; } else if (document.layers) { return document.layers[name]; } } function ap_showWaitMessage(div,flag) { if (!DHTML) return; var x = ap_getObj(div); x.visibility = (flag) ? 'visible':'hidden' if(! document.getElementById) if(document.layers) x.left=280/2; return true; } ap_showWaitMessage('waitDiv', 3); //--> </SCRIPT> </head> <body> Cuerpo del sitio </body> <SCRIPT language=javascript> <!-- ap_showWaitMessage('waitDiv', 0); //--> </SCRIPT>

Page 172: Preguntas Frecuentes

</html>

Javascript:¿Cómo puedo abrir una ventana cuando otra se cierra?Con el script que mostraremos a continuación podemos abrir una ventana nueva cuando otra

es cerrada. Lo bueno que tiene es que se puede configurar la cantidad de segundos que se

debe esperar antes de abrir la nueva ventana.

Código fuente

<html> <head> <SCRIPT LANGUAGE="JavaScript"> <!-- Comienzo closetime = 0; // Cantidad de segundos a esperar para abrir la ventana nueva function Start(URL, WIDTH, HEIGHT) { windowprops = "left=50,top=50,width=" + WIDTH + ",height=" + HEIGHT; preview = window.open(URL, "preview", windowprops); if (closetime) setTimeout("preview.close();", closetime*1000); } function doPopup() { url = "popup.htm"; width = 400; // ancho en pixels height = 320; // alto en pixels delay = 2; // tiempo de delay en segundos timer = setTimeout("Start(url, width, height)", delay*1000); } // Fin --> </script> </head> <body UnOnLoad="doPopup();"> <b>Contenido de tu sitio...</b> </body> </html>

Javascript:¿Cómo abrir un pop-up y cerrar la ventana a la vez?Bien, creo que esto falta entre las FAQ's...

La he probado y me sirve bien :)

Page 173: Preguntas Frecuentes

<html> <head> <title>Launcher</title> <script language="javascript"> function launch(){ x=window.open("previewforo.htm","WindowName","width=900,height=600,top=0,left=0,resizable=yes,scrollbars=yes,menubar=yes,toolbar=yes,status=yes,location=yes") var ventana = window.self; ventana.opener = window.self; ventana.close(); }  </script> <body> <p><a href="javascript:launch()">Click aqui.</a></p> </body> </html>

Javascript:¿Cómo cerrar una ventana del explorador confirmando si desea cerrarla?Bueno, aunque solo funciona en IE ya que el evento onBeforeUnload (quiere decir un suceso

antes de cambiar o cerrar la ventana).

El script consta así:

Código:

<script language="JavaScript">function cierrame() { event.returnValue = "Escribe el texto a mostrar ";}</script>

Y en la etiqueta body donde va a salir el cierrame colocas esto:

Código:

<body onBeforeUnload="cierrame()">

Page 174: Preguntas Frecuentes

Les repito que el comportamiento onBeforeUnload solo funciona con IE, aunque existen

posibilidades de hacerlo funcionar con otro navegador de la misma especie....!!

Javascript:Confirmar cierre de ventanaSiguiendo con el tema de T4X y a pedido de Tunait, les dejo el siguiente script:

<html> <head> <script language="javascript">  function CloseClicked() { event.returnValue = false; }; </script> </head> <body onbeforeunload="CloseClicked();"> <form id="frmTest" name="frmTest" method="post" runat="server"> </form> </body> </html>

Nota: PatomaS agregó que solo sirve para iexplorer y para mozilla 1.7

Javascript:¿Cómo se puede anular el history mientras se navegue por nuestra web?Es tan sencillo como colocar este script en la cabecera de cada una de nuestras páginas:

Código:

if(history.forward(1)){ history.replace(history.forward(1)); }

Page 175: Preguntas Frecuentes

De esta forma si se carga una página nuestra utilizando el botón atrás se redirigirá al usuario a

la siguiente página visitada, que si es nuestra y también lleva este código hará lo mismo

mientras no sea la última página visitada por el usuario.

--

Javascript:Ocultar el contenido de una página hasta que se carguen todos sus elementosIdeal para páginas con muchas imágenes o galerías.

El fin es evitar que el usuario haga clic sobre una imagen mientras otras aun estén en proceso

de carga, lo cual pudiere evitar que dicho proceso culmine exitosamente.

Método 1

Este procedimiento ha sido probado tanto para Internet Explorer como para Mozilla Firefox

1.- Colocar el siguiente javascript entre <head> y </head>

<script language="JavaScript" type="text/javascript">function muestraGranDiv(){document.getElementById('granDiv').style.visibilit y = "visible";document.getElementById('cargando').style.visibili ty = "hidden";}

2.- Cargar javascript (invocar función) en body mediante evento onLoad

<body onload="muestraGranDiv()">

3.- Colocar DIVs dentro del body

<div id="cargando" style="width: 100%; height: 500px; position: absolute; padding-top:20px; text-align:center"><span class="fontloadingcont">Loading content. Please wait...</span></div><div id="granDiv" style="visibility:hidden;"> resto del contenido dentro del DIV <div>

Page 176: Preguntas Frecuentes

El div de id="cargando", se usaría para colocar una advertencia al usuario, con la intención de

que espere mientras se carga el contenido de la página. Fíjese que, obligatoriamente este div

id="cargando", debe estar antes del div id="granDiv"

Para el aviso al usuario sobre la espera mientras se carga el contenido, puede usarse

una imagen en vez de texto:

<div id="cargando" style="width: 100%; height: 500px; position: absolute; padding-top:20px; text-align:center"><img src="loading_content.gif"></div><div id="granDiv" style="visibility:hidden;"> resto del contenido dentro del DIV <div>

El class="fontloadingcont" es el siguiente (puede ser usado como CSS interna o en un archivo

CSS externo y es opcional):

<style type="text/css">.fontloadingcont {font-size: 20px;font-weight: bold;}</style>

Si no desea usar un estilo CSS sobre el texto, no será necesario que mantenga las etiquetas

Método 2

Otra posible forma de conseguir el objetivo

1.- Deshabilitar los links de las imágenes para que no ejecuten la función correspondiente

<a href="pagina.htm" onclick="return false"><img src="imagen.jpg" /></a>

2.- Colocar el siguiente javascript dentro de <head> y </head>

<script type="text/javascript">function enlaces(){for(m=0; m<document.getElementsByTagName('a'); m++){document.getElementsByTagName('a')[m].onclick= function(){return true}}}</script>

Page 177: Preguntas Frecuentes

3.- Invocar la función dentro del body, mediante el evento onLoad

<body onload="enlaces()">

Aviso: Esta breve ayuda es un simple resumen de un tópico encontrado en la sección

Javascript, bajo el número 228025. Sin embargo, la idea original proviene del usuario claray y

una respuesta emitida por él en el tópico de número 224815. Posteriormente, la moderadora

tunait aportó información para ampliar la ayuda y mejorar los códigos, permitiendo su

compatibilidad tanto con Internet Explorer como con Mozilla, e incluso agregando posibilidad de

colocar una advertencia para que el usuario espere mientras carga la página. El Método 2,

proviene también como aporte de la moderadora tunait. El resumen es aporte del usuario

Khronos, quien no pretende atribuirse crédito alguno de las ideas provenientes de los

autores(as) originales.

Javascript:¿Cómo puedo utilizar una hoja de estilo, dependiendo de la resolución de la máquina cliente?Código:

<head> <link rel="stylesheet" type="text/css" id="hojaestilo"> <script language="JavaScript" type="text/javascript"> <!-- document.getElementById('hojaestilo').href = screen.width + ".css"; --> </script></head>

Y se crean tantos archivos css, como resoluciones se deseen tomar en cuenta, con el siguiente

formato: xxxxxx.css, por ejemplo: 800.css, 1024.css

Tutoriales

Page 178: Preguntas Frecuentes

Javascript: (teoria) Uso de un archivo .js(Redirigido desde (teoria) Uso de un archivo .js)

P: ¿Como puedo meter mi codigo en un .js?

R: Veamos como colocar una función dentro de un .js a través de un ejemplo: Supongamos

que tenemos la siguiente página y que deseamos aislar la función cerrar() dentro de un archivo

llamado librerias.js.

Página original

<html> <head> <script type="text/javascript"> function cerrar(){ window.close(); } </script> </head> <body> <input type="button" value="Abrir FullScreen" onclick="cerrar()"> </body></html>

Lo primero que debemos hacer es "aislar" el código JavaScript contenido

entre las etiquetas <script> y </script> de la siguiente manera:

librerias.js

// Nótese que no se debe colocar ningún tag HTML. Ni siquiera <script>.function cerrar(){ window.close();}

La página transformada quedaría de la siguiente manera:

Página transformada

<html> <head> <script type="text/javascript" src="librerias.js"> </script> </head> <body>

Page 179: Preguntas Frecuentes

<input type="button" value="Abrir FullScreen" onclick="cerrar()"> </body></html>

Colocar el código de esta manera tiene las siguientes ventajas: - Da mayor claridad a la página.

- Ayuda a reutilizar el código. - Dificulta (no imposibilita) la lectura del código por terceros.

Notas: - Se pueden incluir tantos archivos .js como se necesiten. - La inclusión puede estar

tanto en el <head> como en el <body>.

Javascript: Usos del método open() (Wizard)(Redirigido desde Usos del método open() (Wizard))

P: ¿Que atributos puedo usar en el método open()?

R: El método open() tiene la siguiente sintaxis: Ver wizard

open(sURL, sNombre, sAtributos, bHistoria);

Donde:

sURL: Indica la dirección de la página a abrir.

sNombre: Nombre de la ventana (util para abrir una segunda dirección sobre la misma ventana.

sAtributos: Definidos posteriormente.

bHistoria: Si la nueva dirección se abre sobre una ventana existente, este indicador dice si debe o no

añadirse al historial.

Lista de atributos utilizables en el método open (actualizada con indicadores de compatibilidad

hasta NS-4 e IE-5).

Atributo: alwaysLowered (NS-4)

Valor: Se usa sin igualarlo a ningún valor

Notas: Indica que la ventana debería permanecer siempre al final de la pila de ventanas.

Atributo: alwaysRaised (NS-4)

Page 180: Preguntas Frecuentes

Valor: Se usa sin igualarlo a ningún valor

Notas: Indica que la ventana debería permanecer siempre en el tope de la pila de ventanas.

Atributo: channelMode (IE-4)

Valor: Se usa sin igualarlo a ningún valor

Notas: Indica si la ventana deberá ser presentada en modo "Channel".

Atributo: dependent (NS-4)

Valor: Yes/No

Notas: Si una ventana es no dependiente, podrá sobrevivir luego de que su creador sea cerrado.

Atributo: directories (NS-4)

Valor: Yes/No

Notas: Controla la apariencia del toolbar personal de Netscape.

Atributo: fullscreen (IE-4)

Valor: Se usa sin igualarlo a ningún valor

Notas: Bajo Windows, MSIE llena la pantalla con la ventana.

Atributo: height (NS-2,IE-4)

Valor: Número.

Notas: Altura de la ventana.

Atributo: hotkeys (NS-4)

Valor: Yes/No

Notas: Colocando este valor a "no", deshabilitará la mayoría de los shortcuts de teclado aparte de la

opción quit.

Atributo: innerHeight (NS-4)

Valor: Número.

Page 181: Preguntas Frecuentes

Notas: Ajusta la altura interna de la ventana al valor dado.

Atributo: innerWidth (NS-4)

Valor: Número.

Notas: Ajusta el ancho interno de la ventana al valor dado.

Atributo: left (NS-4,IE-4)

Valor: Número.

Notas: Posición izquierda de la ventana.

Atributo: location (NS-2,IE-4)

Valor: Yes/No.

Notas: Barra de direcciones visible/invisible.

Atributo: menubar (NS-2)

Valor: Yes/No.

Notas: Barra de menú visible/invisible.

Atributo: outerHeight (NS-4)

Valor: Número.

Notas: Ajusta la altura externa de la ventana al valor dado.

Atributo: outerWidth (NS-4)

Valor: Número.

Notas: Ajusta el ancho externo de la ventana al valor dado.

Atributo: resizable (NS-2,IE-4)

Valor: Yes/No.

Notas: La ventana puede o no ser cambiada de tamaño.

Page 182: Preguntas Frecuentes

Atributo: screenX (NS-4)

Valor: Número.

Notas: Nombre alterno para la posición izquierda de la ventana.

Atributo: screenY (NS-4)

Valor: Número.

Notas: Nombre alterno para la posición superior de la ventana.

Atributo: scrollbars (NS-2,IE-4)

Valor: Yes/No.

Notas: Pueden o no ser mostradas las barras de desplazamiento.

Atributo: status (NS-2,IE-4)

Valor: Yes/No.

Notas: Debe o no ser mostrada las barra de estado.

Atributo: toolbar (NS-2,IE-4)

Valor: Yes/No.

Notas: Debe o no ser mostrada las barra de herramientas.

Atributo: top (NS-4,IE-4)

Valor: Número.

Notas: Posición superior de la ventana.

Atributo: width (NS-2,IE-4)

Valor: Número.

Notas: Ancho de la ventana.

Atributo: z-lock (NS-4)

Valor: Se usa sin igualarlo a ningún valor

Page 183: Preguntas Frecuentes

Notas: Indica que la ventana debería estar en una posición fija en la pila de ventanas.

Lanzando PopUps con javascript:

Si deseas conocer el modo correcto de abrir un popup usando JavaScript, te

recomendamos este artículo (tomado de esta discusión). Creditos: ferent.

Algunos ejemplos frecuentes:

Abrir una ventana en una ubicación específica:

open("ventana.htm", "nombre", "left=100,top=100,width=600,height=400");

Abrir una ventana sin barra de herramientas, sin barra de dirección, sin barras de

desplazamiento, sin barra de estatus:

open("ventana.htm", "nombre", "location=no,menubar=no,scrollbars=no,status=n o");

Abrir una ventana fullscreen (solo Internet Explorer):

open("ventana.htm", "nombre", "fullscreen");

Javascript: DOM: Insertar nuevos elementos(Redirigido desde DOM: Insertar nuevos elementos)

P: ¿Puedo Insertar nuevos elementos (tags) en una página dinámicamente?

R: DOM: creando el nuevo elemento con createElement y luego añadiéndolo con appendChild

Ejemplo:

var nuevoDiv = document.createElement("div");nuevoDiv.align = "center"; document.body.appendChild(nuevoDiv);

Notas:

Page 184: Preguntas Frecuentes

En el ejemplo se ha insertado una capa (div), pero puede hacerse con cualquier etiqueta válida.

La inserción se ha hecho al final del documento, pero se puede hacer al principio con

insertBefore.

Se pueden insertar en cualquier sitio... creo recomendable usar getElementById para

referenciar la etiqueta "padre" de donde se quiera insertar.

Javascript: DOM: Eliminar elementos(Redirigido desde DOM: Eliminar elementos)

P: Como eliminar elementos (etiquetas) dinámicamente.

R: DOM: Usando removeChild.

function eliminar(elemento) {elemento.parentNode.removeChild(elemento);}

ejemplo de uso:

<div onclick="eleiminar(this)" >clickéeme para borrarme</div>

Varios

Javascript:¿Cómo puedo proteger las imagenes de mi web para que nadie las pueda guardar?No se puede.

Puedes usar muchos trucos para que parezca más difícil guardarse las imágenes

(deshabilitar el botón derecho, esconder menús, imposibilitar "Ver código fuente"...)

Page 185: Preguntas Frecuentes

pero NUNCA lograrás idear un sistema que impida que cualquier usuario pueda

"robar" tus imágenes si se lo propone.

No es necesario ser ningún genio para saltarse cualquier protección de Javascript,

basta con usar un navegador con Javascript deshabilitado.

Javascript:¿Cómo puedo hacer que agreguen mi sitio web, como su página de Inicio?<html> <head> <script language="JavaScript"> <!-- function Pagina_Inicio() { obj_Pagina_Inicio.style.behavior='url(#default#homepage)'; obj_Pagina_Inicio.setHomePage("[color=orangered][u]http://www.tu_sitio.com[/u][/color][u][/u]"); } //--> </script> </head> <body> <IE:HOMEPAGE ID="obj_Pagina_Inicio"/> <a href="javascript:Pagina_Inicio();">Convierte [color=orangered][u]Tu Sitio Web[/u][/color] en tu página de Inicio</a>

Únicamente debes cambiar los contenidos con Color Rojo Anaranjado o Subrayado

Page 186: Preguntas Frecuentes

Javascript:¿Cómo puedo hacer que agreguen mi sitio web a sus Favoritos?<html> <head> <script language="JavaScript1.2"> var url="http://www.tu_sitio.com" var titulo="Tu Sitio Web" function agregar(){ if (document.all) window.external.AddFavorite(url,titulo) } </script> </head> <body> <script> if (document.all) document.write('<a href="javascript:agregar()">Agregar a Favoritos</a>') </script> </body> </html>

A pesar de ese pequeño código, se puede simplificar poniéndolo únicamente en el Tag del

Body:

<a href="javascript:window.external.AddFavorite('http ://www.tu_sitio.com', 'Tu Sitio

Web')">Agregar a Favoritos</a> .

¿Cuál es la diferencia? Pues el que os puse al principio, es para evitarnos cualquier posible

error con Navegadores distintos al Internet Explorer. Es el que os recomiendo poner

Javascript:¿Cómo puedo incluír un salto de línea dentro de un mensaje de alert?[ver ejemplo]

<html> <head> <script language="JavaScript"> function mostrar(){ alert("Este es un mensaje de alerta\ncon mas de una línea");

Page 187: Preguntas Frecuentes

} </script> </head> <body> <form name="frm"> <input type="button" value="Alert multilínea" onclick="mostrar()"> </form> </body> </html>

Javascript:Imprimir sin diálogo de confirmación IE<HTML><HEAD><SCRIPT language="javascript"> function imprimir(){ if ((navigator.appName == "Netscape")) { window.print() ; } else{ var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>'; document.body.insertAdjacentHTML('beforeEnd', WebBrowser); WebBrowser1.ExecWB(6, -1); WebBrowser1.outerHTML = "";}}</SCRIPT> </HEAD><BODY onload="imprimir();">Esta es la página impresa de prueba!</BODY></HTML>

_

Page 188: Preguntas Frecuentes

Javascript:¿Cómo puedo hacer que una vez transcurridos "n" segundos de inactividad en mi página se dispare una rutina de screen saver?[ver ejemplo]

<html> <head> <script language="JavaScript">   var id = 0; var bEjecutado = false; var nMiliSegundos = 5000;   function iddle(){ if (bEjecutado) window.clearTimeout(id); bEjecutado = true; id = window.setTimeout("screenSaver()", nMiliSegundos); }   function screenSaver(){ alert("Ponga aquí su método Screen Saver"); }   </script> </head> <body onload="iddle()" onkeyup="iddle()" onclick="iddle()"> <form name="frm"> Este PopUp se autodestruirá en cinco segundos... </form> </body> </html>

Javascript:¿Cómo saber las coordenadas del ratón?[code]

<html><head>

Page 189: Preguntas Frecuentes

<title>Coordenadas</title><script language="JavaScript"><!--function mouseMove(e) {document.getElementById("ejeX").value = (document.all)? event.x+document.body.scrollLeft : e.pageXdocument.getElementById("ejeY").value = (document.layers)? event.y+document.body.scrollTop : e.pageY}function init() {if (!document.all) document.captureEvents(Event.MOUSEMOVE);document.onmousemove = mouseMove;}// --></script></head> <body onload="init()">Eje X <input type="text" id="ejeX" value="0" size="4"><br>Eje Y <input type="text" id="ejeY" value="0" size="4"></body> </html>

Javascript:¿Cómo conocer los detalles del visitante de mi página?Preguntándoselos o con este código:

<html> <head> </head>  <body style="font:normal 10px/20px verdana;"> <script> document.write("<b>Motor del Navegador:</b> "+navigator.appCodeName+"<br>"); document.write("<b>El Navegador es: </b>"+navigator.appName+"<br>"); document.write("<b>LA versión del Navegador es:</b> "+navigator.appVersion+"<br>"); if (navigator.javaEnabled())document.write("Tiene Java activado<br>"); else document.write("No tiene Java activado <br>"); document.write("<b>Motor del Navegador:</b> "+navigator.userAgent+"<br>");

Page 190: Preguntas Frecuentes

document.write("<b>Idioma del Navegador:</b> "+navigator.userLanguage+"<br>"); document.write("<b>Anchura de la Pantalla:</b>"+screen.width+" pixels<br>"); document.write("<b>Altura de la Pantalla:</b>"+screen.height+" pixels<br>");  </script> </body> </html>

Javascript:Desactivar la tecla F5Créditos: Yanix

R: [ver ejemplo]

<html> <head> <script language="javascript">   document.onkeydown = function(){ if(window.event && window.event.keyCode == 116){ window.event.keyCode = 505; } if(window.event && window.event.keyCode == 505){ return false; } }   function pon_hora(){ var dHora = new Date(); var res = String(dHora.getHours()) + ":" + String(dHora.getMinutes()) + ":" + String(dHora.getSeconds()); document.frm.txt.value = res; return res; }   </script> </head> <body onload="pon_hora()"> <form name="frm"> <h1><b>ANULACIÓN DE LA TECLA TECLA F5</b><br></h1> Hora actual:&nbsp;<input type="text" name="txt"><br><br>

Page 191: Preguntas Frecuentes

(Al seleccionar el botón "Actualizar" del navegador la hora debería actualizarse, pero con la tecla F5 no) </form> </body> </html>

Javascript:Mostrar teclado en pantallaCon este código ¡¡ahora con tecla de borrar, mayusculas/minúsculas y teclado QWERTY!!

Ahora compatible con firefox:Ver Ejemplo

<html><head><title>79.-Teclado</title><script>//Script absurdo y original de KarlanKas para forosdelweb.com texto="";var Tletras=new Array ("Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Ñ","Z","X","C","V","B","N","M",",",".");var z=0;var mayus=truefunction anadir(letra){ texto=document.getElementById("barra").value;if(letra=="<<"){numeroLetras=texto.length-1texto=texto.substring(0,numeroLetras);}else{if(!mayus){letra=letra.toLowerCase()}texto=texto+letra;}document.getElementById("barra").value=texto;}function mostrar(){if (z==0){z=1;document.getElementById("botones").style.display="block";pregunta.innerText="Ocultar teclado";}else {

Page 192: Preguntas Frecuentes

z=0;document.getElementById("botones").style.display="none";pregunta.innerText="Mostrar teclado";} } function cambiomayus(aqui){ if(aqui.checked){mayus=true} else{mayus=false} } </script> </head> <body style="font:normal 10px/15px verdana"><center><div style="width:300px"><input type="Text" id="barra" name="barra" style="width:300px;border:solid 1px black" ><br><br><div align=center id="botones" style="font:normal 8px/4px verdana;display:none;"></div><script>var letras="";var p=0;for (a=0;a<Tletras.length;a++){letras=letras+"<input style='width:20px;' type='Button' value="+Tletras[a]+" onclick=anadir('"+Tletras[a]+"')>&nbsp;";p=p+1;if(p==10){p=0;letras=letras+"<br><br>";}}botones.innerHTML=letras+"<input style='width:20px;' alt='Borrar' type='Button' value=&laquo; onClick=anadir('<<')><br><br><input style='width:205px;height:22px;' type='Button' value='espacio' onclick=anadir('&#160')><br><input type=checkbox name=mayusculas onclick='cambiomayus(this)' checked><font style='font:10px'>Mayusculas</font>"; </script><a id="pregunta" href=javascript:mostrar()>Mostrar teclado</a><br></div></center></body></html>

__

Page 193: Preguntas Frecuentes

Javascript:¿Cómo deshabilito la selección de un texto para evitar que sea copiado?Aunque es imposible bloquear el copiado de cualquier elemento de la página vamos a

ponérselo un poco más difícil a los copiones y vamos a deshabilitar la opción de marcar o

seleccionar un texto:

<script language="JavaScript"> function disableselect(e) { return false } function reEnable() { return true } //if IE4+ document.onselectstart=new Function ("return false") //if NS6 if (window.sidebar) { document.onmousedown=disableselect document.onclick=reEnable } </script>

NOTA: Sacado de www.mundomikeoldfield.es.vg , no sé el nombre ni email del autor original,

sino lo ponía. Este script circula por todo internet sin el copyright, por eso me es imposible

saberlo. Perdón si se ofende alguien.

Javascript:¿Cómo crear botón de "guardar como..."?<HTML><HEAD><script language="javascript">function guardarcomo(){var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';

Page 194: Preguntas Frecuentes

document.body.insertAdjacentHTML('beforeEnd', WebBrowser); WebBrowser1.ExecWB(4, 0);WebBrowser1.outerHTML = "";}</script></HEAD><BODY>Oprime el botón para guardar esta página...<BR><input type="submit" value=" Guardar " onClick=guardarcomo() name="miboton"></BODY></HTML>

Sirve para IE 5.5+

Javascript:Copiar el texto que se ha seleccionado en la páginaCódigo:

<!-- TWO STEPS TO INSTALL COPY SELECTED TEXT:  1. Copy the coding into the HEAD of your HTML document 2. Add the last code into the BODY of your HTML document --> <!-- STEP ONE: Paste this code into the HEAD of your HTML document --> <HEAD> <!-- This script and many more are available free online at --><!-- The JavaScript Source!! http://javascript.internet.com --><!-- Original: Raul Macias ([email protected] ) --><!-- Web Site: http://members.cox.net/raulhmacias/ --><SCRIPT LANGUAGE="JavaScript"><!-- Beginfunction copyit(theField) {

var selectedText = document.selection;if (selectedText.type == 'Text') {

var newRange = selectedText.createRange();theField.focus();theField.value = newRange.text;

Page 195: Preguntas Frecuentes

} else {alert('select a text in the page and then press this

button');}

}// End --></script> </HEAD> <!-- STEP TWO: Copy this code into the BODY of your HTML document --> <BODY> <!-- This script and many more are available free online at --><!-- The JavaScript Source!! http://javascript.internet.com --><!-- Original: Raul Macias ([email protected] ) --><!-- Web Site: http://members.cox.net/raulhmacias/ --><form name="it"> <p>This script allows you to select text on a web page and then copy it into a text box. Neat!</p><div align="center"><input onclick="copyit(this.form.select1)" type="button" value="Press to copy the highlighted text" name="btnCopy"><p><textarea name="select1" rows="4" cols="45"></textarea></div></form> <p><center><font face="arial, helvetica" size"-2">Free JavaScripts provided<br>by <a href="http://javascriptsource.com">The JavaScript Source</a></font></center><p> <!-- Script Size: 1.69 KB -->

__________________

Leí que el tabaco era malo y dejé de fumar.

Leí que el alcohol era malo y deje de beber.

Leí que el sexo era malo y dejé de leer.

Page 196: Preguntas Frecuentes

Javascript:¿Cómo puedo saber el tipo de navegador y la versión del mismo?[ver ejemplo]

La función getBrowserName() retornará uno de los siguientes valores:

- ie = Internet Explorer

- ns = Netscape

- op = Opera

- mo = Mozilla

La función getBrowserVersion() retornará la versión del navegador correspondiente.

<html> <head> <script LANGUAGE="JavaScript">   var sBrowser; var sVersion;   function setBrowserType(){ var aBrowFull = new Array("opera", "msie", "netscape", "gecko", "mozilla"); var aBrowVers = new Array("opera", "msie", "netscape", "rv", "mozilla" ); var aBrowAbrv = new Array("op", "ie", "ns", "mo", "ns" ); var sInfo = navigator.userAgent.toLowerCase();;   sBrowser = ""; for (var i = 0; i < aBrowFull.length; i++){ if ((sBrowser == "") && (sInfo.indexOf(aBrowFull[i]) != -1)){ sBrowser = aBrowAbrv[i]; sVersion = String(parseFloat(sInfo.substr(sInfo.indexOf(aBrowVers[i]) + aBrowVers[i].length + 1))); } } }   setBrowserType();   function getBrowserName(){ return sBrowser; }  

Page 197: Preguntas Frecuentes

function getBrowserVersion(){ return sVersion; }   </script> </head> <body> <script language="JavaScript"> setBrowserType(); document.write("Browser: " + getBrowserName() + "<br>"); document.write("Versión: " + getBrowserVersion() + "<br><br>" ); </script> </body> </html>

Javascript:¿Cómo puedo ordenar los datos de una tabla dependiendo de cada columna?Muy sencillo, consta de dos pasos.

1º Añade este Script en el head

<SCRIPT LANGUAGE="JavaScript">  <!-- Begin function compare(sVal1, sVal2){ //para cambiar el orden (ascendente o descendente) se debe //cambiar a negativo el primer 1 y a positivo el segundo, segun convenga if (sVal1 < sVal2) return 1; if (sVal1 > sVal2) return -1; return 0; } function setDataType(cValue) { // THIS FUNCTION CONVERTS DATES AND NUMBERS FOR PROPER ARRAY // SORTING WHEN IN THE SORT FUNCTION var isDate = new Date(cValue); if (isDate == "NaN") {

Page 198: Preguntas Frecuentes

if (isNaN(cValue)) { // THE VALUE IS A STRING, MAKE ALL CHARACTERS IN // STRING UPPER CASE TO ASSURE PROPER A-Z SORT cValue = cValue.toUpperCase(); return cValue; } else { // VALUE IS A NUMBER, TO PREVENT STRING SORTING OF A NUMBER // ADD AN ADDITIONAL DIGIT THAT IS THE + TO THE LENGTH OF // THE NUMBER WHEN IT IS A STRING var myNum; myNum = String.fromCharCode(48 + cValue.length) + cValue; return myNum; } } else { // VALUE TO SORT IS A DATE, REMOVE ALL OF THE PUNCTUATION AND // AND RETURN THE STRING NUMBER //BUG - STRING AND NOT NUMERICAL SORT ..... // ( 1 - 10 - 11 - 2 - 3 - 4 - 41 - 5 etc.) var myDate = new String(); myDate = isDate.getFullYear() + " " ; myDate = myDate + isDate.getMonth() + " "; myDate = myDate + isDate.getDate(); + " "; myDate = myDate + isDate.getHours(); + " "; myDate = myDate + isDate.getMinutes(); + " "; myDate = myDate + isDate.getSeconds(); //myDate = String.fromCharCode(48 + myDate.length) + myDate; return myDate ; } } function sortTable(col, tableToSort) { var iCurCell = col + tableToSort.cols; var totalRows = tableToSort.rows.length; var bSort = 0; var colArray = new Array(); var oldIndex = new Array(); var indexArray = new Array(); var bArray = new Array(); var newRow; var newCell; var i; var c; var j; // ** POPULATE THE ARRAY colArray WITH CONTENTS OF THE COLUMN SELECTED

Page 199: Preguntas Frecuentes

for (i=1; i < tableToSort.rows.length; i++) { colArray[i - 1] = setDataType(tableToSort.cells(iCurCell).innerText); iCurCell = iCurCell + tableToSort.cols; } // ** COPY ARRAY FOR COMPARISON AFTER SORT for (i=0; i < colArray.length; i++) { bArray[i] = colArray[i]; } // ** SORT THE COLUMN ITEMS //alert ( colArray ); colArray.sort(compare); //alert ( colArray ); for (i=0; i < colArray.length; i++) { // LOOP THROUGH THE NEW SORTED ARRAY indexArray[i] = (i+1); for(j=0; j < bArray.length; j++) { // LOOP THROUGH THE OLD ARRAY if (colArray[i] == bArray[j]) { // WHEN THE ITEM IN THE OLD AND NEW MATCH, PLACE THE // CURRENT ROW NUMBER IN THE PROPER POSITION IN THE // NEW ORDER ARRAY SO ROWS CAN BE MOVED .... // MAKE SURE CURRENT ROW NUMBER IS NOT ALREADY IN THE // NEW ORDER ARRAY for (c=0; c<i; c++) { if ( oldIndex[c] == (j+1) ) { bSort = 1; } } if (bSort == 0) { oldIndex[i] = (j+1); } bSort = 0; } } } // ** SORTING COMPLETE, ADD NEW ROWS TO BASE OF TABLE .... for (i=0; i<oldIndex.length; i++) { newRow = tableToSort.insertRow(); for (c=0; c<tableToSort.cols; c++) { newCell = newRow.insertCell(); newCell.innerHTML = tableToSort.rows(oldIndex[i]).cells(c).innerHTML; }

Page 200: Preguntas Frecuentes

} //MOVE NEW ROWS TO TOP OF TABLE .... for (i=1; i<totalRows; i++) { tableToSort.moveRow((tableToSort.rows.length -1),1); } //DELETE THE OLD ROWS FROM THE BOTTOM OF THE TABLE .... for (i=1; i<totalRows; i++) { tableToSort.deleteRow(); } } // End --> </script>

2º Paso: Crear la tabla

//indicar el número de columnas, teniendo cuidado de que no haya colspan <table name="rsTable" id="rsTable" cols=6> <tr><td><A href="java script:sortTable(0, rsTable">ID</A></td> <td><A href="java script:sortTable(1, rsTable);">Nombre</A></td> <td><A href="java script:sortTable(2, rsTable);">Apellidos</A></td>  //etc...

Y lo demás depende de ustedes.

Javascript:¿Cómo puedo saludar al visitante según su pais de origen?Con este código.

Tomado de: Elosan

Código:

<script> nul = ""; if (navigator.userLanguage == "es") nul = "España"; if (navigator.userLanguage == "es-mx") nul = "Mejico"; if (navigator.userLanguage == "es-gt") nul = "Guatemala";

Page 201: Preguntas Frecuentes

if (navigator.userLanguage == "es-cr") nul = "Costa Rica"; if (navigator.userLanguage == "es-do") nul = "Republica Dominicana"; if (navigator.userLanguage == "es-pa") nul = "Panama"; if (navigator.userLanguage == "es-ve") nul = "Venezuela"; if (navigator.userLanguage == "es-co") nul = "Colombia"; if (navigator.userLanguage == "es-pe") nul = "Perú"; if (navigator.userLanguage == "es-ar") nul = "Argentina"; if (navigator.userLanguage == "es-ec") nul = "Ecuador"; if (navigator.userLanguage == "es-cl") nul = "Chile"; if (navigator.userLanguage == "es-uy") nul = "Uruguay"; if (navigator.userLanguage == "es-py") nul = "Paraguay"; if (navigator.userLanguage == "es-bo") nul = "Bolivia"; if (navigator.userLanguage == "es-sv") nul = "El Salvador"; if (navigator.userLanguage == "es-hn") nul = "Honduras"; if (navigator.userLanguage == "es-ni") nul = "Nicaragua"; if (navigator.userLanguage == "es-pr") nul = "Puerto Rico"; if (nul == "") document.write("Gracias por visitarnos."); else document.write("Gracias por visitarnos desde " + nul +".")</script>

_

Javascript:¿Cómo puedo redondear un valor a una cierta cantidad de decimales?Créditos: jordan

R: [ver ejemplo]

<html> <head> <script language="JavaScript"> function redondear(num, dec){ num = parseFloat(num); dec = parseFloat(dec); dec = (!dec ? 2 : dec); return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec); }   function calcula(){ with (document.frm) res.value = redondear(val.value, dec.value); } </script> <head> <body>

Page 202: Preguntas Frecuentes

<form name="frm"> <table border="0"> <tr> <td align="right"> Numero: </td> <td> <input type="text" name="val"><br> </td> </tr> <tr> <td align="right"> Decimales: </td> <td> <input type="text" name="dec"><br> </td> </tr> <tr> <td> &nbsp; </td> <td align="center"> <input type="button" name="calc" value="Redondear" onclick="calcula()"> </td> </tr> <tr> <td align="right"> Resultado: </td> <td> <input type="text" name="res"><br> </td> </tr> </table> </form> </body> </html>

Javascript:¿Cómo pongo un buscador interno en mi site?Siguiendo estos sencillos pasos:

Cómo instalar un buscador, el APB Search 1.12 (que es gratuito)

Page 203: Preguntas Frecuentes

Hay otra versión que es de pago con más características, pero creo que esta basta y sobra

para la mayoría. A mi modo de ver es bastante bueno, aunque supongo que cada uno tendrá el

de su preferencia.

Pasos a seguir:

1.- Descargar el archivo apbsearch.zip de apbsystems.com

2.- Dentro hay 5 archivos:

archive.cgi

readme11.txt

search.cgi

searchBottom.html

searchTop.html

Copiamos todos (salvo el txt) en el directorio CGI-BIN del servidor donde tengamos alojada la

página. Es importante que dicho upload se haga en modo texto (ver configuración de vuestro

programa FTP).

3.- Una vez subidos dais permisos (CHMOD) a los archivos con extensión CGI (search y

archive).

4.- Debes llamar, si no lo sabes, a tu proveedor de hosting para preguntar la ruta absoluta

dentro del servidor de tu página.

5.- Una vez hecho esto con el navegador ve a esta página:

http://www.tudominio.com/cgi-bin/archive.cgi

Tal vez el acceso a tu directorio de CGI sea otro, pregunta al proveedor de tu hospedaje.

6.- si todo va bien pasa al punto 7, si no, si te sale un error 500 comprueba los permisos del

archivo archive.cgi, comprueba que lo has subido en modo texto. Si te dice que no lo encuentra

comprueba que la ruta es la correcta (ya os he dicho que la ruta puede que no sea la puesta,

hay hospedajes cuya ruta es cgi.tudominio.com...).

7.- Aparecerá una página de diseño bastante discreto: que te preguntará el dominio de la

página, la ruta absoluta de la misma dentro del servidor y la extensión de los archivos que

quieres indexar. Rellénalo como debas y dale a siguiente.

8.- Ahora debes seleccionar los directorios que quieres que indexe. Fíjate que no está marcado

un directorio que no contenga archivos web (imágenes, scripts...).

9.- Por último des-selecciona los archivos que no quieras que indexe (prueba3.html y cosas por

el estilo que siempre se quedan pululando).

Page 204: Preguntas Frecuentes

10.- Si todo ha ido bien aparecerá una ventana confirmando que ya está.

11.- Ve al directorio CGI-BIN de tu servidor y cambia los permisos de el archivo archive.cgi a

600 para evitar que alguien malintencionado te modifique la lista de archivos.

12.- Añade el siguiente código a la página de búsqueda:

Código:

<form action="/cgi-bin/search.cgi" method="get"><input type="text" name="search" size=27><input type="submit"></form>

13.- Editad los archivos searchTop.html y searchBottom.html para dar una imagen a la página

de resultados acorde con vuestra página web. Y ya está!!

Espero que os haya ayudado. Si no es así espero vuestras dudas.

Un saludo!

Me alegraría que si usas esta faq comentarás que es mía.

_

Javascript:¿Cómo puedo hacer un link en la web para agregar un contacto messenger?Puedes utilizar lo siguiente:

<OBJECT height='1' id='MsgrObj' width='1'></OBJECT><script>function DoInstantMessage(person,screen){

//Check if person has messenger installedtry{MsgrObj.classid="clsid:B69003B3-C55E-4B48-836C-

BC5946FC3B28";}catch(e){if(!(e.number && 2148139390) == 2148139390)return;}

 //Check if you are logged inif(MsgrObj.MyStatus == 1){

alert("You are not logged into Messenger.\nYou must login to Messenger before continuing.");

return;

Page 205: Preguntas Frecuentes

//Check if person is already in contact listtry{var contact = MsgrObj.GetContact(person,"");}catch(e){

if((e.number && 2164261642) == 2164261642) //MSGR_E_USER_NOT_FOUND

{if(confirm("Add "+screen+" to your contact

list?")==true)MsgrObj.AddContact(0,person);}

//Ask to send an instant messageif(confirm("Send "+screen+" an instant

message?")==true)MsgrObj.InstantMessage(person);}</script>

Luego llamas a la función así:

Código:

<a href=javascript:DoInstantMessage("[email protected]","nombre")>Messenger</a>

O bien usa una imagen como enlace.

I

Javascript:Meter un archivo txt, en una pagina webesto va en cualquier parte donde quieras meter el txt

<script language="javascript" src="diario.txt"></script>

esto debe de ir en el txt

var saludo=""+ "<font color=#ffffff size=2>script, para meter un txt<br>"+  "<font color=#333333 size=2>en un html, sin problemas</font>"+

Page 206: Preguntas Frecuentes

 "<font color=#ffffff size=1>CsC3</font>";  document.write(saludo);

este codigo tiene la libertad que puedes meter, texto (con formato), imágenes, etc...

[sé que no soy moderador, ni nada del foro de jscript, pero este código se me hace muy fácil y

práctico, perdón si hago mal, en ponerlo]

_

Javascript:¿Cómo puedo saber el Sistema Operativo sobre el que está corriendo mi página?<html> <head> <script LANGUAGE="JavaScript">   function getOpSys(){ var sOpSys = "<b>O.S.: </b>" + navigator.appVersion.toLowerCase().split(";", 3)[2]; return sOpSys; }   </script> <title></title> </head> <body> <script language="JavaScript"> document.writeln(getOpSys()); </script> </body> </html>

Javascript:¿Cómo puedo mostrar un número con una determinada cantidad de decimales?Con este pequeño código:

Page 207: Preguntas Frecuentes

<html> <head> <script> Number.prototype.decimal = function (num) { pot = Math.pow(10,num); return parseInt(this * pot) / pot; } function decimal(src) { n=eval(document.getElementById(src).value); alert(n.decimal(3)); //deja 3 decimales } </script> </head>  <body> <input type="text" id="numero" value="3.1415926"> <input type="button" onClick="decimal('numero')"> </body> </html>

_

Javascript:¿Cómo tener un WHOIS siempre a mano?P.- Muchas veces necesitamos saber si un dominio está libre o comprobar cuando un dominio

de un cliente caduca y tenemos que visitar la típica página de un vendedor de dominios,

solicitarlo y darle al whois cuando nos dice que (obviamente) está ocupado. ¿No hay una forma

más sencilla?

R.- Sí la hay, pega este código en la barra de dirección de tu navegador, a continuación pincha

en el espacio de la derecha de dicha barra donde suele aparecer el icono de página web (en el

explorer una hoja con una e delante) y arrástralo hasta la barra de vínculos.

javascript:pepe=prompt("nombre del dominio","","");document.location("http://www.dnsstuff.com/tools/whois.ch?ip="+pepe);

Page 208: Preguntas Frecuentes

Javascript:Proteger dirección de correoCon este pequeño código, (no es perfecto, pero bueno, puede funcionar)

Créditos Bravenet

<SCRIPT LANGUAGE="javascript">var primero = 'ma';var segundo = 'il';var tercero = 'to:'; // ejemplo: epa2var direccion = 'epa2'; // ejemplo: hotmailvar dominio = 'hotmail'; var extension = 'com';  document.write('<a href="');document.write(primero+segundo+tercero);document.write(direccion);document.write('@');document.write(dominio);document.write('.');document.write(extension); document.write('">'); document.write('¡Escribe a epa2!</a>');</script>

_

Javascript:¿Cómo puedo poner un botón para imprimir que desaparezca una vez presionado?Créditos: Bravenet (es que yo sólo soy un aprendiz)

<html> <head> <script language="JavaScript"> function printPage() { if(document.all) {

Page 209: Preguntas Frecuentes

document.all.divButtons.style.visibility = 'hidden'; window.print(); document.all.divButtons.style.visibility = 'visible'; } else { document.getElementById('divButtons').style.visibility = 'hidden'; window.print(); document.getElementById('divButtons').style.visibility = 'visible'; } } </script> </head> <body> <div id="divButtons" name="divButtons"> <input type="button" value = "Print this page" onclick="printPage()" style="font:bold 11px verdana;color:#FF0000;background-color:#FFFFFF;"> </div> </body> </html>

_

Javascript:Ejecutar código JavaSrcipt, PHP o ASPEn el archivo HTML debemos ubicar la llamada al archivo que queremos ejecutar:

index.htm

<HTML> <HEAD> <TITLE>Ejectuar código PHP o ASP con JavaScript</TITLE> </HEAD> <BODY> <script language="JavaScript" src="archivo.php"></script> <script language="JavaScript" src="archivo.asp"></script> </BODY> </HTML>

El archivo del Script debe contener la funcion document.write al final del mismo para poder

imprimir el contenido que generó dinámicamente:

archivo.php

Page 210: Preguntas Frecuentes

<? // En este espacio pondremos todo el // código PHP que queremos ejecutar // y luego juntar todo lo que es // necesario imprimir en una sola // variable.  $variable = "Script PHP ejecutado desde una página HTML"; ?> document.write("<?=$variable;?>");  archivo.asp  <% ' En este espacio pondremos todo el ' código ASP que queremos ejecutar ' y luego juntar todo lo que es ' necesario imprimir en una sola ' variable.  variable = "Script ASP ejecutado desde una página HTML" %> document.write("<%=variable%>");

Javascript:¿Existe alguna forma de implementar passwords con JavaScript?Con el lenguaje JavaScript no es posible hacer grandes sistemas de protección de páginas con

password. Pero existe un método que a más de uno les puede ser útil.

Se trata de ubicar un formulario en el que se pide un password, al ingresarlo y clickear sobre

"Enviar", este toma el valor del campo y se dirige a una página con datos_del_campo.htm. Es

decir, para poder ingresar a la página oculta debemos tipear dentro del formulario

datos_del_campo.

Obviamente la página que no queremos proteger vamos a ponerle un nombre más difícil, lleno

de números, como por ejemplo: 77xwt1.htm. En este caso, para poder ingresar, se debe tipear

dentro del campo del formulario la palabra 77xwt1 y el javascript redireccionará hacia el .htm. Si

la clave que se ingresó no es la correcta se mostrará la típica página de error 404.

Código fuente El código que hará posible la protección que javascript es el siguiente:

Page 211: Preguntas Frecuentes

<SCRIPT> function acceso(){ window.location = document.formclave.clave.value + ".htm" } </SCRIPT> <FORM name=formclave> <INPUT type=text name=clave> <INPUT type=button value=Enviar onclick="acceso()"> </FORM>

La página oculta (la que queremos proteger) se puede como uno la desee, no influye en el

anterior código. El formulario posee un campo y un botón que al clickearlo llama a la función

acceso(). Al ejecutarse esta función, se encarga de tomar el contenido del campo clave y

asigna al navegador que se dirija hacia una página con el contenido de ese campo + la

extensión .htm.

Javascript:¿Cómo puedo validar que una IP sea correcta?Con estas pocas líneas de código:

function validar(ip) { partes=ip.split('.'); if (partes.length!=4) { alert('ip no valida'); return; } for (i=0;i<4;i++) { num=partes[i]; if (num>255 || num<0 || num.length==0 || isNaN(num)){ alert('ip no valida'); return; } } }

Page 212: Preguntas Frecuentes

Javascript:¿Cómo puedo hacer una contraseña segura para mi web?Existe un método inventado, se llama md5, y convierte una cadena (por muy larga que sea) a

una nueva codificada de código hexadecimal de una determinada longitud. Lo bueno es que

dos cadenas iguales generan la misma codificación y no existen (o eso dicen xD) dos cadenas

diferentes que se codifiquen igual. El código para ocultar claves os lo dejo, hacer lo que querais

con él.

// ****************************************************************************** // * md5.js // * // * A JavaScript implementation derived from the RSA Data Security, Inc. MD5 // * Message-Digest Algorithm. See [url]http://cw.oaktree.co.uk/site/legal.html[/url] for // * details. // * // * Copyright (C) Paul Johnston 1999 - 2000. Distributed under the LGPL. // *****************************************************************************/  /* to convert strings to a list of ascii values */ var sAscii = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ" var sAscii = sAscii + "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";  /* convert integer to hex string */ var sHex = "0123456789ABCDEF"; function hex(i) { h = ""; for(j = 0; j <= 3; j++) { h += sHex.charAt((i >> (j * 8 + 4)) & 0x0F) + sHex.charAt((i >> (j * 8)) & 0x0F); } return h; }  /* add, handling overflows correctly */ function add(x, y) {

Page 213: Preguntas Frecuentes

return ((x&0x7FFFFFFF) + (y&0x7FFFFFFF)) ^ (x&0x80000000) ^ (y&0x80000000); }  /* MD5 rounds functions */ function R1(A, B, C, D, X, S, T) { q = add(add(A, (B & C) | ((~B) & D)), add(X, T)); return add((q << S) | (q >>> (32 - S)), B); }  function R2(A, B, C, D, X, S, T) { q = add(add(A, (B & D) | (C & (~D))), add(X, T)); return add((q << S) | (q >>> (32 - S)), B); }  function R3(A, B, C, D, X, S, T) { q = add(add(A, B ^ C ^ D), add(X, T)); return add((q << S) | (q >>> (32 - S)), B); }  function R4(A, B, C, D, X, S, T) { q = add(add(A, C ^ (B | (~D))), add(X, T)); return add((q << S) | (q >>> (32 - S)), B); }  /* main entry point */ function calcMD5(sInp) {   /* Calculate length in machine words, including padding */ wLen = (((sInp.length + 8) >> 6) + 1) << 4; var X = new Array(wLen);   /* Convert string to array of words */ j = 4; for (i = 0; (i * 4) < sInp.length; i++) { X[i] = 0; for (j = 0; (j < 4) && ((j + i * 4) < sInp.length); j++) { X[i] += (sAscii.indexOf(sInp.charAt((i * 4) + j)) + 32) << (j * 8); } }   /* Append padding bits and length */ if (j == 4) {

Page 214: Preguntas Frecuentes

X[i++] = 0x80; } else { X[i - 1] += 0x80 << (j * 8); } for(; i < wLen; i++) { X[i] = 0; } X[wLen - 2] = sInp.length * 8;   /* hard coded initial values */ a = 0x67452301; b = 0xefcdab89; c = 0x98badcfe; d = 0x10325476;   /* Process each 16 word block in turn */ for (i = 0; i < wLen; i += 16) { aO = a; bO = b; cO = c; dO = d;   a = R1(a, b, c, d, X[i+ 0], 7 , 0xd76aa478); d = R1(d, a, b, c, X[i+ 1], 12, 0xe8c7b756); c = R1(c, d, a, b, X[i+ 2], 17, 0x242070db); b = R1(b, c, d, a, X[i+ 3], 22, 0xc1bdceee); a = R1(a, b, c, d, X[i+ 4], 7 , 0xf57c0faf); d = R1(d, a, b, c, X[i+ 5], 12, 0x4787c62a); c = R1(c, d, a, b, X[i+ 6], 17, 0xa8304613); b = R1(b, c, d, a, X[i+ 7], 22, 0xfd469501); a = R1(a, b, c, d, X[i+ 8], 7 , 0x698098d8); d = R1(d, a, b, c, X[i+ 9], 12, 0x8b44f7af); c = R1(c, d, a, b, X[i+10], 17, 0xffff5bb1); b = R1(b, c, d, a, X[i+11], 22, 0x895cd7be); a = R1(a, b, c, d, X[i+12], 7 , 0x6b901122); d = R1(d, a, b, c, X[i+13], 12, 0xfd987193); c = R1(c, d, a, b, X[i+14], 17, 0xa679438e); b = R1(b, c, d, a, X[i+15], 22, 0x49b40821);   a = R2(a, b, c, d, X[i+ 1], 5 , 0xf61e2562); d = R2(d, a, b, c, X[i+ 6], 9 , 0xc040b340); c = R2(c, d, a, b, X[i+11], 14, 0x265e5a51); b = R2(b, c, d, a, X[i+ 0], 20, 0xe9b6c7aa); a = R2(a, b, c, d, X[i+ 5], 5 , 0xd62f105d); d = R2(d, a, b, c, X[i+10], 9 , 0x2441453); c = R2(c, d, a, b, X[i+15], 14, 0xd8a1e681); b = R2(b, c, d, a, X[i+ 4], 20, 0xe7d3fbc8); a = R2(a, b, c, d, X[i+ 9], 5 , 0x21e1cde6); d = R2(d, a, b, c, X[i+14], 9 , 0xc33707d6); c = R2(c, d, a, b, X[i+ 3], 14, 0xf4d50d87); b = R2(b, c, d, a, X[i+ 8], 20, 0x455a14ed);

Page 215: Preguntas Frecuentes

a = R2(a, b, c, d, X[i+13], 5 , 0xa9e3e905); d = R2(d, a, b, c, X[i+ 2], 9 , 0xfcefa3f8); c = R2(c, d, a, b, X[i+ 7], 14, 0x676f02d9); b = R2(b, c, d, a, X[i+12], 20, 0x8d2a4c8a);   a = R3(a, b, c, d, X[i+ 5], 4 , 0xfffa3942); d = R3(d, a, b, c, X[i+ 8], 11, 0x8771f681); c = R3(c, d, a, b, X[i+11], 16, 0x6d9d6122); b = R3(b, c, d, a, X[i+14], 23, 0xfde5380c); a = R3(a, b, c, d, X[i+ 1], 4 , 0xa4beea44); d = R3(d, a, b, c, X[i+ 4], 11, 0x4bdecfa9); c = R3(c, d, a, b, X[i+ 7], 16, 0xf6bb4b60); b = R3(b, c, d, a, X[i+10], 23, 0xbebfbc70); a = R3(a, b, c, d, X[i+13], 4 , 0x289b7ec6); d = R3(d, a, b, c, X[i+ 0], 11, 0xeaa127fa); c = R3(c, d, a, b, X[i+ 3], 16, 0xd4ef3085); b = R3(b, c, d, a, X[i+ 6], 23, 0x4881d05); a = R3(a, b, c, d, X[i+ 9], 4 , 0xd9d4d039); d = R3(d, a, b, c, X[i+12], 11, 0xe6db99e5); c = R3(c, d, a, b, X[i+15], 16, 0x1fa27cf8); b = R3(b, c, d, a, X[i+ 2], 23, 0xc4ac5665);   a = R4(a, b, c, d, X[i+ 0], 6 , 0xf4292244); d = R4(d, a, b, c, X[i+ 7], 10, 0x432aff97); c = R4(c, d, a, b, X[i+14], 15, 0xab9423a7); b = R4(b, c, d, a, X[i+ 5], 21, 0xfc93a039); a = R4(a, b, c, d, X[i+12], 6 , 0x655b59c3); d = R4(d, a, b, c, X[i+ 3], 10, 0x8f0ccc92); c = R4(c, d, a, b, X[i+10], 15, 0xffeff47d); b = R4(b, c, d, a, X[i+ 1], 21, 0x85845dd1); a = R4(a, b, c, d, X[i+ 8], 6 , 0x6fa87e4f); d = R4(d, a, b, c, X[i+15], 10, 0xfe2ce6e0); c = R4(c, d, a, b, X[i+ 6], 15, 0xa3014314); b = R4(b, c, d, a, X[i+13], 21, 0x4e0811a1); a = R4(a, b, c, d, X[i+ 4], 6 , 0xf7537e82); d = R4(d, a, b, c, X[i+11], 10, 0xbd3af235); c = R4(c, d, a, b, X[i+ 2], 15, 0x2ad7d2bb); b = R4(b, c, d, a, X[i+ 9], 21, 0xeb86d391);   a = add(a, aO); b = add(b, bO); c = add(c, cO); d = add(d, dO); } return hex(a) + hex(b) + hex(c) + hex(d); }

_

Page 216: Preguntas Frecuentes

Javascript:¿Cómo puedo desordenar un array dos veces "aleatoriamente" y que el resultado sea el mismo?He ideado un método a partir del conocido quickSort, sin evaluar si un elemento es menor que

otro o de más, simplemente los cambia sean como sean:

function desorden(arr) { //solo para desordenar mucho for(a=1;a<=arr.length-1;a++) quickDeSort(arr,0,a); for(a=0;a<arr.length-1;a++) quickDeSort(arr,a,arr.length-1); } function quickDeSort(objArray,ini,fin) { var i=ini; var j=fin; var tmp; do { tmp = objArray[i]; objArray[i] = objArray[j]; objArray[j] = tmp; if ( i <= j ) { i++; j--; } } while ( i <= j ); if ( ini < j ) quickDeSort(objArray,ini,j); if ( i < fin ) quickDeSort(objArray,i,fin); }

Es curioso que si llamamos a quickDeSort con los mismos atributos dos veces (lo he probado

solo con 0 y objArray.length-1), el array queda intacto. Por muchas veces que hagais reload, el

desorden quedará igual y parecerá aleatorio. La function desorden solo sirve para desordenar

muchas veces, y darle más realismo.

Espero que les sirva.

Javascript:¿Cómo puedo imprimir solo la parte de la página que me interesa?La idea es "ocultar", con css, los <div> donde pondremos, por ejemplo, las noticias y los enlaces que se utilizarán para imprimirlas. En el momento de imprimir se "hace visible" el

correspondiente.

He aquí un ejemplo:

<html><head>

Page 217: Preguntas Frecuentes

<style type="text/css">@media print { div,a {display:none} .ver {display:block} .nover {display:none}}</style><script>function impre(num) { document.getElementById(num).className="ver"; print(); document.getElementById(num).className="nover";}</script></head> <body><div id="uno">Artículo primero</div><a href="#" onclick="impre('uno');return false">Imprime 1</a><div id="dos">Artículo segundo</div><a href="#" onclick="impre('dos');return false">Imprime 2</a><div id="tres">Articulo tercero</div><a href="#" onclick="impre('tres');return false">Imprime 3</a></body></html>

Javascript:Pasar varios parámetros a una misma funciónEn este ejemplo queremos hacer que sobre diferentes áreas de mapa en una imagen apunten

a diferentes vínculos que abran una ventana que en cada caso tiene un tamaño determinado.

Para ello, utilizamos una sola función:

<SCRIPT LANGUAGE="Javascript">function abrir(pag,alto,ancho)

Page 218: Preguntas Frecuentes

{window.open(pag + ".htm","","height=" + alto +","+ "width=" + ancho); };</SCRIPT> y en las zonas activas pondremos: onClick="javascript:abrir('primera',540,400)"onClick="javascript:abrir('segunda',20,100)"

Javascript:Title mejorado (tooltip)Mediante una combinación de las FAQ39

(http://www.forosdelweb.com/showthrea...744#post264744)

Averiguar coordenadas del ratón, y FAQ57

(http://www.forosdelweb.com/showthrea...126#post267126)

Mostrar/Ocultar capas.

Ejemplo:

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript"> var ns4 = (document.layers)? true:false var ie4 = (document.all)? true:false var ns6 = (document.getElementById && !document.all) ? true: false; var coorX, coorY;   if (ns6) document.addEventListener("mousemove", mouseMove, true) if (ns4) {document.captureEvents(Event.MOUSEMOVE); document.mousemove = mouseMove;}   function mouseMove(e) { if (ns4||ns6) { coorX = e.pageX; coorY = e.pageY;

Page 219: Preguntas Frecuentes

} if (ie4) { coorX = event.x; coorY = event.y; } coorX += document.body.scrollLeft; coorY += document.body.scrollTop; return true; }   function ini() { if (ie4) document.body.onmousemove = mouseMove; }   function mostrar(dato) { with(document.getElementById("ayuda")) { style.top = coorY + 10; style.left = coorX + 10; style.visibility = "visible"; innerHTML = dato; } }   function ocultar() { document.getElementById("ayuda").style.visibility = "hidden"; }   function mover() { with(document.getElementById("ayuda")) { style.top = coorY + 10; style.left = coorX + 10; } }   </script> </head> <body onload="ini()" > <div align=center> <h3> ... Mueve el raton por el texto ... </h3> <span onmouseover="mostrar('primer mensaje')" onmousemove="mover()" onmouseout="ocultar()"> Mensaje 1 </span> <span onmouseover="mostrar('mensaje segundo')" onmousemove="mover()"

Page 220: Preguntas Frecuentes

onmouseout="ocultar()"> Mensaje 2 </span> </div> <div id="ayuda" style=" visibility:hidden; position:absolute; background:yellow; font:normal 10px/10px verdana; color:black; border:solid 1px black; text-align:justify; padding:10px 10px 10px 10px;"> </div>   </body> </html>

Se pueden cambiar los estilos de la capa ayuda para personalizar la visualización.

_

Javascript:¿Cómo puedo utilizar varias funciones sobre muchos elementos de forma sencilla?Para solucionarlo, utilizaremos "this" por el objeto sobre el que actuamos, es decir:

<script languaje='javascript'>function manita(cual){document.body.style.cursor='hand';cual.style.backgroundColor="#00ffff";};  function flecha(algo){document.body.style.cursor='default';algo.style.backgroundColor="#00ddff";};</script>

Page 221: Preguntas Frecuentes

Y para actuar sobre el objeto (en el ejemplo, toda una fila):

<tr onmouseover="manita(this)" onmouseout="flecha(this)">

NOTA: Esto hace que causa y efecto se refieran siempre al mismo objeto (pongo el ratón sobre

esta fila -> se ilumina toda la fila); para que causa y efecto se refieran a diferentes objetos

(pongo el ratón en cierto botón -> se ilumina cierta celda en otro lugar) deberíamos entrar en el

juego de name="tacata" o id="tacata" y usar manita(tacata)

Javascript:¿Cómo puedo crear textos alternativos sin hacer uso de la etiqueta alt?Con un poco de imaginación y una simple capita .....

Código:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head>

<title></title></head> <body><script type="text/javascript">var x=0; var y=0; if(!document.all) {

document.captureEvents(Event.MOUSEMOVE);}document.onmousemove = show; function crearAlt(texto) {

document.getElementById("ALTdHTML").innerHTML = '<div style="border: 1px solid #000000; background-color: #fdfec2; padding: 2px; font-size: 70%; font-family: verdana">' + texto + '</div>';} function show(evento) {

document.getElementById("ALTdHTML").style.visibility = 'visible';

Page 222: Preguntas Frecuentes

if(document.all) {x = event.clientX;y = event.clientY + document.body.scrollTop;

document.getElementById("ALTdHTML").style.left = x + 10;

document.getElementById("ALTdHTML").style.top = y + 14;

} else {x = evento.clientX + document.body.scrollLeft;y = evento.clientY + document.body.scrollTop;document.getElementById("ALTdHTML").style.left = x +

10; document.getElementById("ALTdHTML").style.top = y +

14;}

} function hide() {

document.getElementById("ALTdHTML").style.visibility = 'hidden';

document.getElementById("ALTdHTML").innerHTML = "";}</script><div id="ALTdHTML" style="position: absolute; visibility: hidden">&nbsp;</div> <img src="" width="250" height="70" onMouseOver="crearAlt('Imagen');" onMouseOut="hide();">  </body></html>

_

Javascript:¿Cómo puede saber un usuario su resolución de pantalla actual?Utiliza este código entre las etiquetas <body> y </body>

Tu resolución actual es :

Page 223: Preguntas Frecuentes

<script language="javascript"> var largo=screen.width; var alto=screen.height; document.write(largo+"x"+alto); </script>

Javascript:¿Cómo puedo hacer para añadir una página a Favoritos?Prueba con este código

Créditos: Bravenet

Observaciones Para IE basta con pulsar en el link, para Opera y Nestcape será necesario

pulsar la combinación de teclas Control + D

<script type="text/javascript"> var text = "!Méteme en Favoritos¡" // Añade el URL de tu sitio var site = "http://www.tusitio.com"; // Añade el nombre o descripción de tu página var desc = "Descripción de tu pagina" var ver = navigator.appName var num = parseInt(navigator.appVersion) if ((ver == "Microsoft Internet Explorer")&&(num >= 4)) { document.write('<a title="Hacer favoritos de esta página" href="javascript:window.external.AddFavorite(site,desc);" '); document.write('onMouseOver=" window.status=') document.write("text; return true ") document.write('"onMouseOut=" window.status=') document.write("' '; return true ") document.write('">'+ text + '</a>') } else { text += " (Ctrl+D)" document.write(text) } </script> </span>

_

Page 224: Preguntas Frecuentes

Javascript:¿Cómo puedo hacer que JS genere una clave aleatoria?Por medio de este código:

Las variables:

caracter: Poner aquí los caracteres válidos para formar la clave.

numero_caracteres: Poner la longitud de caracteres de la clave generada.

<html><head><title>Clave Aleatoria</title><style>*{font:normal 10px/10px verdana;}input{border:solid 1px black;}</style><script>//Script original de KarlanKas para forosdelweb.com 

var caracter="1234567890";caracter+="QWERTYUIOPASDFGHJKLÑZXCVÇBNM";caracter+="qwertyuiopñlkjhçgfdsazxcvbnm";var numero_caracteres=8;

 var total=caracter.length;function azar(){var clave="";for(a=0;a<numero_caracteres;a++){clave+=caracter.charAt(parseInt(total*Math.random(1)));}document.forms[0].clave2.value=clave;}

</script></head><body onload="azar()"><form>Clave.-<input type="text" readonly="readonly" name="clave2" id="clave2" /><input type="button" value="regenerar clave" onclick="azar()" /></form></body></html>

__

Page 225: Preguntas Frecuentes

Ventanas

Javascript: Ventana maximizada(Redirigido desde Ventana maximizada)

Ver Ejemplo

<html> <head> <script language="JavaScript"> function amplia(){ resizeTo(screen.width, screen.height) moveTo(0, 0); } </script> </head> <body onload="amplia()"> <h1> Tamaño máximo </h1> </body></html>

Javascript: PopUps(Redirigido desde PopUps)

Page 226: Preguntas Frecuentes

Ver Ejemplo

<html> <head> <script language="JavaScript"> function abrirVentana() { open("popUp.htm","miVentana", "toolbar=no,directories=no,menubar=no,status=no"); } </script> </head> <body> <form name="frm"> <input type="button" name="boton" value="PopUp" onClick="abrirVentana()"> </form> </body></html>

Javascript: "FullScreen"Ver ejemplo

Nota: donde dice "java script" debería decir "JavaScript"

Código:

<html> <head> <script language="JavaScript">  function fullFullScr(){ var vent = null; vent = window.open('','vVent','fullscreen=yes') llenaVentana(vent); // Para direccionar a una página específica, elimine la linea anterior // y utilice la siguiente: // vent.location = "miPagina.htm"; }  function llenaVentana(vent){ with (vent.document){ open(); write("<html><head></head><body>")

Page 227: Preguntas Frecuentes

write("(Solo funciona sobre IE v.4 o superior)<br>") write("Recuerde colocar un botón para carrar<br><br>") write("<input type='button' value='Cerrar' onclick='JavaScript:window.close()'>") write("</html>") close(); } }  </script> </head> <body> <input type="button" value="Abrir FullScreen" onclick="fullFullScr()"> </body></html>

Javascript:Cerrar una ventana principal sin confirmación(Redirigido desde Cerrar una ventana principal sin confirmación)

Nota: Una versión mas sencilla y compatible con todas las plataformas puede ser encontrada

en el FAQ-115.

R: ver ejemplo

El siguiente script se basa en una llamada a un OLE Object de Windows, lo que lo hace

incompatible con otras plataformas.

<html> <!-- Aportado por: Carlitos --> <head> <script language="JavaScript"> function salir(){ close(); } </script> </head> <body> <form name="frm"> <input type="button" value="Cerrar con confirmación" onclick="salir()"> <br>

Page 228: Preguntas Frecuentes

<object id="MyControl" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" codebase="HHCTRL.ocx#Version=4,72,8252,0" width="100" height="100"> <PARAM name="Command" value="Close"> <PARAM name="Button" value="Text:Cerrar sin confirmación"> </object> </form> </body></html>

Ventana explosivaR: ver ejemplo

Créditos: Carlitos

Código:

<html> <head> </head> <body> <script language="JavaScript">  var ancho = 100 var alto = 100 var fin = 300 var x = 100 var y = 100  function inicio(){ ventana = window.open("hola.htm", "_blank", "resizable,height=1,width=1,top=x,left=y,screenX=x,screenY=y"); abre(); }  function abre(){ if (ancho <= fin) { ventana.moveTo(x, y); ventana.resizeTo(ancho, alto); x += 5; y += 5; ancho += 15; alto += 15; timer = setTimeout("abre()", 1); } else { clearTimeout(timer); }

Page 229: Preguntas Frecuentes

}  </script> <form> <input type="button" value="Abrir Ventana" onClick="inicio()"></p> </form> </body></html>

PopUp ajustada a imagenVer Ejemplo

<script language="javascript"> //script por Tunaitvar ventanavar cont=0var titulopordefecto = "Perico de los palotes" //texto por defecto a mostrar en la barra de título en caso de omitir el argumento titulo function afoto(cual,titulo){if(cont==1){ventana.close();ventana=null}if(titulo==null){titulo=titulopordefecto}ventana=window.open('','ventana','resizable=yes,scrollbars=no')ventana.document.write('<html><head><title>' + titulo + '</title></head><body style="overflow:hidden" marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" scroll="no" onUnload="opener.cont=0"><img src="' + cual + '" onLoad="opener.redimensionar(this.width, this.height)">')ventana.document.close()cont++}function redimensionar(ancho,alto){ventana.resizeTo(ancho+12,alto+28)ventana.moveTo((screen.width-ancho)/2,(screen.height-alto)/2) //centra la ventana. Eliminar si no se quiere centrar el popup}</script>

Y luego a cada enlace a cada imagen....

desde texto: <a href="#" onClick="afoto('nombredelaimagen.jpg','Mi titulo');return

false">Imagen 1 </a>

Page 230: Preguntas Frecuentes

desde una imagen: <a href="#" onClick="afoto('nombredelaimagen.jpg','Mi

titulo');return false"><img src="imagen.jpg"></a>

Nota: Se puede omitir el segundo argumento (titulo) al llamar a la función. En ese caso

la ventana tendrá el título por defecto guardada en la variable titulopordefecto

Javascript: PopUp ajustada a imagen versión 2(Redirigido desde PopUp ajustada a imagen versión 2)

Es una variante que incluye la posibilidad de pasar a la imagen siguiente o a la anterior desde

el mismo pop-up

<script language="javascript"> //Ventana ajustada a foto por tunait var ventana//metemos en un array el listado de las imágenes que queramos utilizar en el orden que nos interese afotos=new Array()afotos[0]="tibidabo.jpg"afotos[1]="gato.jpg"afotos[2]="paloma.jpg"afotos[3]="perico.jpg" function afoto(cual){if(ventana){ventana.close()}buscar(cual)ventana=window. open('','ventana','resize=yes,scrollbars=no,resizable=yes')ventana.document.write('<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0"><img id="foto" alt="mi foto" src="' + cual + '" onLoad="opener.redimensionar(this.width, this.height)">')ventana.document.write('<br><div align="center"><a href="#" onClick="if(opener.cont==0){opener.cont=opener.afotos.length-1}else{opener.cont--};document.getElementById(\'foto\').src =opener.afotos[opener.cont];return false">anterior</a>')ventana.document.write(' | <a href="#" onClick="if(opener.cont==opener.afotos.length-1){opener.cont=0}else{opener.cont+

Page 231: Preguntas Frecuentes

+};document.getElementById(\'foto\').src =opener.afotos[opener.cont];return false">siguiente</a>')} var contfunction redimensionar(ancho, alto){ventana.resizeTo(ancho,alto+50)}function buscar(que){for(c=0;c<afotos.length;c++){ if(afotos[c]==que) { cont= c; return cont break }} }

... y luego llamamos a cada imagen a través de la función pasándole como argumento el

nombre de la imagen:

<body bgcolor="#FFFFFF" text="#000000"><div align="center"><b onClick="afoto('tibidabo.jpg')">Tibidabo</b> &nbsp;&nbsp;<b onClick="afoto('gato.jpg')">Gato</b> &nbsp;&nbsp;<b onClick="afoto('paloma.jpg')">Paloma</b>&nbsp;&nbsp;<b onClick="afoto('perico.jpg')">Perico</b> </div></body>

Javascript: Abrir un Pop-up centrado en la pantalla(Redirigido desde Abrir un Pop-up centrado en la pantalla)

Pregunta: ¿Como puedo abrir un Pop-up y que quede centrado en la pantalla en cualquier

resolución?

Respuesta: Haciendo el Pop-up parecido a esto:

Page 232: Preguntas Frecuentes

<html><head><script type="text/javascript">function centrar() { iz=(screen.width-document.body.clientWidth) / 2; de=(screen.height-document.body.clientHeight) / 2; moveTo(iz,de);} </script></head><body onload="centrar()">Segunda página</body></html>

Javascript: Abrir Pop-Up en Correo Web<html> <head> <script language="JavaScript"> function Ventana(){ window. open('pagina','frame','toolbar=no,directories=no,menubar=no,status=no,height=300,width=300');} </script> </head> <body> <object id="Cerrar" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" codebase="http://activex.microsoft.com/activex/controls/htmlhelp/HHCTRL.ocx#Version=4,72,8252,0" width=0 height=0> <param name="Command" value="Close"> </object> <body onLoad="Cerrar.Click(); Ventana();"> </body> </html>

Ese código debe estar en la página a llamar desde el Correo Web.

Page 233: Preguntas Frecuentes

Javascript: Apertura lateral de una ventanaAbre Una Ventana Lateralmente De Izquierda A Derecha Dando Un Muy Buen Efecto.

ver ejemplo

Si Deseas Que La Ventana Tenga Un Ancho Y Largo Especifico Reemplaza:

"screen.height" (alto) "screen.width" (ancho)

Por Los Valores Deseados, Tambien Puedes Modificar moveTo(0,0) Para Acomodar

La Ventana En Una Determinada Posicion X,Y De La Pantalla.

Código:

<script languaje="JavaScript">ventana=window.open("","","width=100,height=screen.height")ventana.moveTo(0,0)a=100for (a; a<screen.width; a+=10){ ventana.resizeBy(10,0)}</script>

NOTA: acuérdate que esto va en el tag HEAD y que luego en el body tienes que hacer

la llamada para abrir la ventana.(creo yo ) .Espero que mi profe de javascript se sienta

orgulloso algún dia de su torpe alumno. Adiós

Page 234: Preguntas Frecuentes

Javascript: Ventanas sólo como pop-upCódigo:

<body onLoad="if (!opener) window.close()">

Saludos

Javascript: Cerrar una ventana principal sin confirmación (II)R: Ver ejemplo

Consiste en engañar al navegador haciéndole creer que la estamos cerrando desde su opener.

TEMA: VENTANAS

<html><head><script language="JavaScript"> function cerrar() {var ventana = window.self;ventana.opener = window.self;ventana.close();} </script></head><body>Problema:<br><a href="#" onClick="window.close()">Cerrar ventana de modo tradicional (el navegador pedirá confirmación)</a><br><br>Solución:<br><a href="#" onClick="cerrar()">Cerrar ventana sin confirmación</a></body></html>

P.D.: Popito ha comprobado que esto no funciona en IE5 para MAC. Ojo: Podría ocurrir

también en otros navegadores.

Page 235: Preguntas Frecuentes

P.D.2:LeandroEnrique comentaba que no le funciona en Mozilla asi que me he puesto a

comprobarlo en varios navegadores. Concretamente en IE6, Netscape6.2,Opera7.23 y Mozilla

Firefox. He de decir que en todos ellos ha funcionado el ejemplo que aparece en esta FAQ y a

diferencia de IE6 en el resto de navegadores incluso el caso de un simple window.close()

tampoco te pide confirmación.

Cita:

Iniciado por frodogusPor favor, añadir en el apartado 115 Cerrar una ventana principal sin confirmación (II) no se admite en IE7

Saludos.

Javascript: Cerrar todas las ventanasAbre todas tus ventanas usando la función abreVentana()

Pega este script en alguna parte entre <head> y </head>

Código:

<script language="JavaScript">//cerrar todas las ventanas. Script por tunait!//http://javascript.tunait.com///[email protected] cont = 0function abreVentana(pagina){cont++eval('ventana'+ cont + "=window.open(pagina,'ventana'+cont,'')")} function cerrar(){for(m=1;m<=cont;m++)

{if(eval('ventana' + m))

{eval('ventana' + m + ".close()")}

Page 236: Preguntas Frecuentes

}cont=0}</script>

Para abrir las ventanas (ejemplo para un link)

<a href="tuPagina.html" onclick="abreVentana('tuPagina.html');return false"> enlace </a>

Finalmente al tag de body...

<body onunload="cerrar()">

Javascript: Dialogo WebBien, lo que tenemos que tener en cuenta es que el diálogo web maneja dos tipos de ventana:

showModalDialog: Permite solo interactuar con la ventana abierta, o sea, que si querés

regresar a la ventana que la abrió tienes que cerrar este dialogo web.

showModelessDialog: Permite interactuar con las 2 ventanas (con la que la abriste y la abierta).

Lo anterior lo resalto para que cuando crees uno ten en cuenta que a tu gusto puedes hacer

una interacción con el usuario.

Bien, en marcha, este es el argumento simple para crear una ventana modal

(showmodalDialog):

Código:

<script language="javascript"> function abrirDialogoModal() {showModalDialog('pagina.htm','','dialogWidth:505px; dialogHeight:325px;status:no;resizable:yes');}

Page 237: Preguntas Frecuentes

</script>

Como puedes ver, lo que estoy diciendo en el código anterior es que abra una ventana modal

con parámetros (ancho, alto y si prefieres Barra de Estado), y lo resaltado en rojo en el script

son los parámetros de ancho y alto que le quieras dar a la ventana...

Ahora, lo mismo puedes hacer con showModelessDialog:

Código:

<script language="javascript"> function abrirDialogoModeless() {showModelessDialog('pagina.htm','','status:no;resizable:yes');}</script>

Ten en cuenta que esta función solo se desempeña en IE 5.5 y superior, aunque se está

investigando si esta función de JavaScript tambien sea compatible con otros browsers.

Adicionalmente, en el Dialogo Web, se crean otros botones, si los quieres colocar o no:

help = Icono de ayuda

maximize = Icono de maximizar y de restaurar

minimize = Icono de minimizar

Si estos íconos los quieres colocar en tu ventana simplemente los colocarías así:

Código:

showModalDialog('pagina.htm','','status:no;help:yes ó no;otros parametros')

Page 238: Preguntas Frecuentes

Javascript: Abrir enlace en un popupTal vez sea la manera menos usada, pero creo que la más fácil , simplemente

abriendo un popup vacío desde el evento onclick del enlace, y que la ventana

(segundo parámetro de open) coincida con el target del mismo enlace.

<a href="destino.html" target="popup" onclick='window.open("", "popup", "")' > popup </a>

Hay otra forma que se discutió en este mensaje que sería más o menos así:

<a href="destino.html" target="popup" onclick='window.open(this.href, this.target, ""); return false;' > popup </a>

Para pasar la validación estricta (w3.org) debe obviarse el atributo target, pero también

se puede asignar en el mismo script

<a href="destino.html" onclick='this.target = "popup"; window.open("", "popup", "")' > popup </a>

Page 239: Preguntas Frecuentes

Javascript: Aviso anti popupConsideraciones: En vista del aumento de herramientas anti-popup en navegadores,

antivirus etc, los diseñadores de páginas web tenemos que "estrujarnos" un poco más

la cabeza para ir adaptandonos a los cambios en las costumbres de los navegantes.

Es posible que tengamos en nuestro sitio web una page que se abra como pop-pup,

pero al estar activo el anti-popup, esta no se muestra, con la consiguiente pérdida de

información para el sitio.

Pregunta: ¿Cómo puedo evitar que esto pase?

Respuesta: Mira a ver si con este código te sirve, es sencillito.

Creditos: epa4

Código:

<HTML><HEAD><TITLE>fullscreen</TITLE><script language="JavaScript"> function cerrar()//esta función lo que hace es cerrar una página sin pedir confirmación{ventana=window.self;ventana.opener=window.self;ventana.close();} function pantallacompleta(pagina) {var opciones=("toolbar=no, location=no, directories=no, status=no, menubar=no ,scrollbars=yes,resizable=no, fullscreen=yes"); var w=window.open(pagina,"ventana",opciones);

if (w.name=="ventana") {cerrar();

}else {

window.document.writeln("Desactiva el bloqueo de poppus windows en tu equipo, de lo contrario\n"+ "no podrás entrar en la pagina o verla."); 

}}</script></HEAD><BODY onload="javascript:pantallacompleta('http://www.tusitio.com/home.html');">

Page 240: Preguntas Frecuentes

</BODY></HTML>

Javascript: Otra forma de apertura lateral de una ventana con variantesCréditos: http://www.lawebdejrolo.iespana.es/l...iptlateral.htm

1º) Entre las etiquetas <head> y </head> de tu página html poner:

<SCRIPT LANGUAGE="JavaScript"> function expandingWindow(website) { var heightspeed = 2; // vertical scrolling speed (higher = slower) var widthspeed = 7; // horizontal scrolling speed (higher = slower) var leftdist = 0; // distance to left edge of window var topdist = 0; // distance to top edge of window if (document.all) { var winwidth = window.screen.availWidth - leftdist; var winheight = window.screen.availHeight - topdist; var sizer = window.open("","","left=" + leftdist + ",top=" + topdist + ",width=1,height=1,scrollbars=yes"); for (sizeheight = 1; sizeheight <winheight; sizeheight += heightspeed) { sizer.resizeTo("1", sizeheight); } for (sizewidth = 1; sizewidth <winwidth; sizewidth += widthspeed) { sizer.resizeTo(sizewidth, sizeheight); }

Page 241: Preguntas Frecuentes

 sizer.location = website; } else window.location = website; } </script>

2º) Entre las etiquetas <body> y </body> hacer el llamado function:

<a href="nombredepagina.htm" alt="se expande"onClick="expandingWindow('nombredepagina.htm');ret urn false;">Pulsa</a>

Nota: variando los valores de velocidad de vertical y horizontal puedes producir los efectos que

más te gusten