Foros del Web » Programando para Internet » Javascript »

No funciona Funcion en Chrome ni Firefox

Estas en el tema de No funciona Funcion en Chrome ni Firefox en el foro de Javascript en Foros del Web. estimados amigos tengo una funcion para actualizar diferentes parametros de un panel de control pero solo me funciona en IE en crome y en Firefox ...
  #1 (permalink)  
Antiguo 17/06/2010, 14:55
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años, 6 meses
Puntos: 0
No funciona Funcion en Chrome ni Firefox

estimados amigos tengo una funcion para actualizar diferentes parametros de un panel de control pero solo me funciona en IE en crome y en Firefox no hay caso .. les dejo la funcion espero comnetarios..

Código:
function actualizar() {
	var myForm = document.createElement("form");
	myForm.method = "post";
	myForm.action = obtener_nombre_pagina();
	var id_habitacion = <?php echo $id_habitacion; ?>;
	var mes = document.calgen.sel_mes.options[document.calgen.sel_mes.selectedIndex].value;
	var anho = document.calgen.sel_anho.options[document.calgen.sel_anho.selectedIndex].value;
	for (i=1;i<=3;i++) {
	    var myInput = document.createElement("input") ;
	    switch(i) {
			case 1:
				myInput.setAttribute("name", "id_habitacion");
				myInput.setAttribute("value", id_habitacion);
				break;
			case 2:
				myInput.setAttribute("name", "mes");
				myInput.setAttribute("value", mes);
				break;
			case 3:
				myInput.setAttribute("name", "anho");
				myInput.setAttribute("value", anho);
				break;
		}
		myForm.appendChild(myInput);
	};
	var total_actu = 0;
	for(i=0; i<=document.all.item("actu").length - 1; i++) {
		if (document.calgen.actu[i].checked) {
			total_actu = total_actu + 1;
		};
	};
	if (document.getElementById("calgenasigs") != null) {
		for(i=0; i<=document.all.item("asig").length - 1; i++) {
			var actualizar = false;
			if (total_actu == 0) {
				actualizar = true;
			}
			else {
				if (document.calgen.actu[i].checked) {
					actualizar = true;
				}
			}
			if (actualizar) {
				var min_asig = 0;
				var max_asig = 999;
				if ( (isNaN(Number(document.calgen.asig[i].value)) == true) || (isNaN(parseInt(document.calgen.asig[i].value)) == true) ) {
					alert("Todos los días a actualizar deben tener un NUMERO ASIGNADO entre " + min_asig + " y " + max_asig + ".");
					return;
				};
				if ( (parseInt(document.calgen.asig[i].value) < min_asig) || (parseInt(document.calgen.asig[i].value) > max_asig) ) {
					alert("Todos los días a actualizar deben tener un NUMERO ASIGNADO mayor que " + min_asig + " y menor " + max_asig + ".");
					return;
				};
				var myInput = document.createElement("input") ;
				myInput.setAttribute("name", document.calgen.asig[i].id);
				myInput.setAttribute("value", document.calgen.asig[i].value);
				myForm.appendChild(myInput);
			};
		};
	};
	if (document.getElementById("calgenesmis") != null) {
		for(i=0; i<=document.all.item("esmi").length - 1; i++) {
			var actualizar = false;
			if (total_actu == 0) {
				actualizar = true;
			}
			else {
				if (document.calgen.actu[i].checked) {
					actualizar = true;
				}
			}
			if (actualizar) {
				var min_esmi = 0;
				var max_esmi = 999;
				if ( (isNaN(Number(document.calgen.esmi[i].value)) == true) || (isNaN(parseInt(document.calgen.esmi[i].value)) == true) ) {
					alert("Todos los días a actualizar deben tener una ESTANCIA MINIMA entre " + min_esmi + " y " + max_esmi + ".");
					return;
				};
				if ( (parseInt(document.calgen.esmi[i].value) < min_esmi) || (parseInt(document.calgen.esmi[i].value) > max_esmi) ) {
					alert("Todos los días a actualizar deben tener una ESTANCIA MINIMA mayor que " + min_esmi + " y menor " + max_esmi + ".");
					return;
				};
				var myInput = document.createElement("input") ;
				myInput.setAttribute("name", document.calgen.esmi[i].id);
				myInput.setAttribute("value", document.calgen.esmi[i].value);
				myForm.appendChild(myInput);
			};
		};
	};
	if (document.getElementById("calgentarns") != null) {
		for(i=0; i<=document.all.item("tarn").length - 1; i++) {
			var actualizar = false;
			if (total_actu == 0) {
				actualizar = true;
			}
			else {
				if (document.calgen.actu[i].checked) {
					actualizar = true;
				}
			}
			if (actualizar) {
				var min_tarn = 0;
				var max_tarn = 9999;
				if ( (isNaN(Number(document.calgen.tarn[i].value)) == true) || (isNaN(parseInt(document.calgen.tarn[i].value)) == true) ) {
					alert("Todos los días a actualizar deben tener una TARIFA NORMAL entre " + min_tarn + " y " + max_tarn + ".");
					return;
				};
				if ( (parseInt(document.calgen.tarn[i].value) < min_tarn) || (parseInt(document.calgen.tarn[i].value) > max_tarn) ) {
					alert("Todos los días a actualizar deben tener una TARIFA NORMAL mayor que " + min_tarn + " y menor " + max_tarn + ".");
					return;
				};
				var myInput = document.createElement("input") ;
				myInput.setAttribute("name", document.calgen.tarn[i].id);
				myInput.setAttribute("value", document.calgen.tarn[i].value);
				myForm.appendChild(myInput);
			}
		};
	};
	if (document.getElementById("calgentaros") != null) {
		for(i=0; i<=document.all.item("taro").length - 1; i++) {
			var actualizar = false;
			if (total_actu == 0) {
				actualizar = true;
			}
			else {
				if (document.calgen.actu[i].checked) {
					actualizar = true;
				}
			}
			if (actualizar) {
				var min_taro = 0;
				var max_taro = 9999;
				if ( (isNaN(Number(document.calgen.taro[i].value)) == true) || (isNaN(parseInt(document.calgen.taro[i].value)) == true) ) {
					alert("Todos los días a actualizar deben tener una TARIFA OFERTA entre " + min_taro + " y " + max_taro + ".");
					return;
				};
				if ( (parseInt(document.calgen.taro[i].value) < min_taro) || (parseInt(document.calgen.taro[i].value) > max_taro) ) {
					alert("Todos los días a actualizar deben tener una TARIFA OFERTA mayor que " + min_taro + " y menor " + max_taro + ".");
					return;
				};
				if ( parseInt(document.calgen.taro[i].value) > parseInt(document.calgen.tarn[i].value) ) {
					alert("Todos los días a actualizar deben tener una TARIFA OFERTA menor o igual que la TARIFA NORMAL.");
					return;
				};
				var myInput = document.createElement("input") ;
				myInput.setAttribute("name", document.calgen.taro[i].id);
				myInput.setAttribute("value", document.calgen.taro[i].value);
				myForm.appendChild(myInput);
			}
		};
	};
	if (document.getElementById("calgenbloq") != null) {
		for(i=0; i<=document.all.item("bloq").length - 1; i++) {
			var actualizar = false;
			if (total_actu == 0) {
				actualizar = true;
			}
			else {
				if (document.calgen.actu[i].checked) {
					actualizar = true;
				}
			}
			if (actualizar) {
				var myInput = document.createElement("input") ;
				myInput.setAttribute("name", document.calgen.bloq[i].id);
				myInput.setAttribute("value", document.calgen.bloq[i].options[document.calgen.bloq[i].selectedIndex].value);
				myForm.appendChild(myInput);
			}
		};
	};
	document.body.appendChild(myForm);
	myForm.submit() ;
	document.body.removeChild(myForm);	
}
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #2 (permalink)  
Antiguo 18/06/2010, 05:45
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: No funciona Funcion en Chrome ni Firefox

Alguien q me de una mano?? .. por favor ..
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #3 (permalink)  
Antiguo 18/06/2010, 09:19
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No funciona Funcion en Chrome ni Firefox

¿qué dice la consola de errores?
  #4 (permalink)  
Antiguo 18/06/2010, 14:34
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: No funciona Funcion en Chrome ni Firefox

esta todo ok .. funciona perfecto en IE todo ok .. pero en Firefox y chrome cuando apreto el boton con onclick="actualizar()" .. no hace nada .. igual tengo otra funciones en el mismo archivo y si funcionan esta y otra funcion no me funcionan en esos navegadores
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #5 (permalink)  
Antiguo 18/06/2010, 15:25
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No funciona Funcion en Chrome ni Firefox

Pues algo te tendrán que mostrar las consolas de errores.

No le veo problemas al código, excepto por el hecho de que si bien estás usando el DOM correctamente en casi todo el programa, hay un par de líneas en las que usás algo desaconsejable:
Código Javascript:
Ver original
  1. var mes = document.calgen.sel_mes.options[document.calgen.sel_mes.selectedIndex].value;
Accedés directamente al elemento via document. Eso puede causar problemas. Se ha preguntado muchas veces por situaciones similares, a veces pasa que teniendo algo así:

<div id="undiv">
<elemento name="loquesea">
</div>

internet explorer permite acceder a "elemento" via document.loquesea, pero en Firefox se necesita document.undiv.loquesea. Te recomiendo asignarle un ID al elemento, y accederlo via getElementById(). Si eso no soluciona el problema, habrá que ver la consola.


Saludos.
  #6 (permalink)  
Antiguo 21/06/2010, 08:26
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 45
Respuesta: No funciona Funcion en Chrome ni Firefox

Buenas,

el problema está en que no tienes definido el atributo enctype con un valor acorde a los datos que se vayan a enviar ya que es obligatorio cuando el método de envio es post.

Por otro lado también utilizas document.all que fue un invento de Microsoft y no está en el estándar. Como todavía hay mucho código que lo utiliza los navegadores lo toleran pero se utilizaba para discriminar cuando se utilizaba o no IE, no como parte del código en si y puede que el script no haga lo que tuviera que hacer en el caso de los demás navegadores.
  #7 (permalink)  
Antiguo 21/06/2010, 11:43
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No funciona Funcion en Chrome ni Firefox

Cita:
Iniciado por Tecna Ver Mensaje
el problema está en que no tienes definido el atributo enctype con un valor acorde a los datos que se vayan a enviar ya que es obligatorio cuando el método de envio es post.
Solamente si se enviarán archivos, en caso contrario el valor por defecto está bien.
Cita:
Iniciado por Tecna Ver Mensaje
Por otro lado también utilizas document.all que fue un invento de Microsoft y no está en el estándar. Como todavía hay mucho código que lo utiliza los navegadores lo toleran pero se utilizaba para discriminar cuando se utilizaba o no IE, no como parte del código en si y puede que el script no haga lo que tuviera que hacer en el caso de los demás navegadores.
No había visto el document.all, ciertamente puede estar allí el problema. No lo sabremos si no tenemos la salida de la consola de errores.
Vale aclarar que solamente IE y Opera tienen un objeto document.all
  #8 (permalink)  
Antiguo 21/07/2010, 14:01
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: No funciona Funcion en Chrome ni Firefox

Gracias Chicos .. si cero que error esta en el document.all estuve averiguadno e investigando y ni mozilla ni chrome lo tienen .. proximamente estan por ponerlo.. pero lo cambiare estoy en eso..
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #9 (permalink)  
Antiguo 21/07/2010, 14:09
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: No funciona Funcion en Chrome ni Firefox

Cita:
... proximamente estan por ponerlo..
dime que hablas en serio... eso no puede suceder porque estos navegadores, aunque tienen sus cosas adicionales como cualquier otro navegador, estan basado en el estandar. dudo mucho que eso suceda...
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: chrome, firefox, funcion
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 08:44.