Foros del Web » Programando para Internet » Javascript »

Problema para escribir código HTML con javascript

Estas en el tema de Problema para escribir código HTML con javascript en el foro de Javascript en Foros del Web. Hola, hace mucho que no uso javascript, y no sé qué hago mal que me sale mal cuando intento reescribir con javascript código HTML en ...
  #1 (permalink)  
Antiguo 25/10/2005, 08:58
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 11 meses
Puntos: 3
Problema para escribir código HTML con javascript

Hola, hace mucho que no uso javascript, y no sé qué hago mal que me sale mal cuando intento reescribir con javascript código HTML en mi página.

Exactamente se trata de lo siguiente:

Tengo un formulario llamado form_intro:

Código HTML:
<form action="inicio.php?opcion1=insertar" method="post" enctype="multipart/form-data" name="form_intro" id="form_intro">

.....

A&ntilde;o: 
            <select name="anyo" id="anyo">
              <option>2005</option>
              <option>2006</option>
              <option>2007</option>
            </select>
Mes: 
            <select name="mes" id="mes" onChange="javascript:mostrar_dias()">
              <option value="1">Ene</option>
              <option value="2">Feb</option>
              <option value="3">Mar</option>
              <option value="4">Abr</option>
              <option value="5">May</option>
              <option value="6">Jun</option>
              <option value="7">Jul</option>
              <option value="8">Ago</option>
              <option value="9">Sep</option>
              <option value="10">Oct</option>
              <option value="11">Nov</option>
              <option value="12">Dic</option>
            </select>

<script language="JavaScript" type="text/JavaScript">
	function mostrar_dias() {
	     window.document.writeln('&nbsp;D&iacute;a: <select name="dia" id="dia">');           		
	     switch (document.form_intro.mes) {
		case 1,3,5,7,8,10,12: for (var i = 1; i <= 31; i++) writeln('<option value="'+i+'">'+ i +'</option>');
		break;
		case 4,6,9,11: for (var i = 1; i <= 30; i++) writeln('<option value="'+i+'">'+ i +'</option>');
		break;
		case 2: // Calcular años bisiestos.
	     }
	     window.document.writeln('</select>');
             }
</script>

</form> 
Lo que deseo, es que al cambiar el mes (onChange), se ejecute el script de manera que aparezca el campo select de los días, con el número correspondiente de días dependiendo del mes elegido.

Tal cual lo he hecho, me escribe dicho campo en una nueva página, y además no me aparecen los días (el error que me da es que document.form_intro no tiene propiedades).

Alguien me puede ayudar a solucionar el error y que me vaya bien esta función?

De paso, si es posible agradecería saber la función para calcular años bisiestos. Creo que eran los múltiplos de 4, pero si no recuerdo mal habían más condiciones.

Un saludo!
  #2 (permalink)  
Antiguo 25/10/2005, 17:55
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 11 meses
Puntos: 3
Por favor, nadie sabría solucionarme esto?
  #3 (permalink)  
Antiguo 25/10/2005, 17:59
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Si usas document.write/writeln se sobre-escribe la página, perdiendo todo su contenido... para hacer pruebas son mejor las alertas, y para mostrar en la página son buenos los campos text de los formularios (actualizando su value)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 25/10/2005, 21:22
 
Fecha de Ingreso: octubre-2005
Ubicación: Argentina
Mensajes: 15
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta

Para un script asi, preferiria no generar el codigo de esta manera.
Lo que haria es generar 3 divs con los datos de los meses que estas interesado en mostrar en la opcion determinada, y los haria aparecer en onchange.

Saludos...
__________________
Gustavo W.
------------------------------
MGB HOSTING ARGENTINA
http://www.mgbhosting.com.ar
  #5 (permalink)  
Antiguo 26/10/2005, 06:25
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 11 meses
Puntos: 3
Muchas gracias a los dos por la respuesta y el interés prestado

mgbhosting.com.ar: no entiendo muy bien el método que recomiendas. No te importaría explicarlo un poquito más?

Caricatos, la información me ha sido de utilidad y sé lo que quieres decir, pero ahora sin el writeln no sé cómo implementarlo. Hago lo siguiente, pero no me sale:

Código:
function mostrar_dias() {
	switch (document.form_intro.mes.value) {
		case 1,3,5,7,8,10,12: for (var i = 1; i <= 31; i++) {
			document.form_intro.dia.option = i;
			document.form_intro.dia.value = i;
		}
		break;
	             case 4,6,9,11: for (var i = 1; i <= 30; i++) {
		             document.form_intro.dia.option = i;
		             document.form_intro.dia.value = i;
		}
		break;
		case 2: // Calcular años bisiestos.
	}
}
Sin usar writeln, no sé cómo hacer para crear las opciones del campo select. Hay alguna manera? Alguna propiedad?
  #6 (permalink)  
Antiguo 26/10/2005, 06:31
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
no lo probe pero seria algo asi:
Código PHP:
<script language="JavaScript" type="text/JavaScript">
    function 
mostrar_dias() {
         
campo '&nbsp;D&iacute;a: <select name="dia" id="dia">';                   
         switch (
document.form_intro.mes) {
                    case 
1,3,5,7,8,10,12: for (var 1<= 31i++) campo +='<option value="'+i+'">'+'</option>';
                    break;
                    case 
4,6,9,11: for (var 1<= 30i++) campo += '<option value="'+i+'">'+'</option>';
                    break;
                    case 
2// Calcular años bisiestos.
         
}
         
campo += '</select>';
         
document.getElementById("div_select").innerHTML campo;
             }
</script>

<div id="div_select"></div> 
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #7 (permalink)  
Antiguo 26/10/2005, 07:47
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 11 meses
Puntos: 3
Hola Bhonox, muchas gracias, casi lo consigo!

Ahora sí que me escribe dinámicamente el campo <select> de 'dia'. Lo que pasa que las opciones aún no las muestra.

Pensaba que tal vez podría ser porque la variable campo no la has declarado con var al principio de la función, pero he probado y no es por eso. Debe haber alguna cosa que se nos pasa.
  #8 (permalink)  
Antiguo 27/10/2005, 10:24
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
lo q pasa es q no entra al switch case .
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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