Foros del Web » Programando para Internet » Javascript »

Javascript no me funciona cuando coloco el Doctype.

Estas en el tema de Javascript no me funciona cuando coloco el Doctype. en el foro de Javascript en Foros del Web. Hola amigos, Yo tengo un codigo javascript que lo tenia funcionando bien en una pagina de testeo, pero cuando lo implemento en el sitio enlinea ...
  #1 (permalink)  
Antiguo 05/03/2010, 15:03
Avatar de saymon  
Fecha de Ingreso: septiembre-2003
Ubicación: Panama
Mensajes: 318
Antigüedad: 21 años, 3 meses
Puntos: 0
Javascript no me funciona cuando coloco el Doctype.

Hola amigos,

Yo tengo un codigo javascript que lo tenia funcionando bien en una pagina de testeo, pero cuando lo implemento en el sitio enlinea no me funciona, me di cuenta que cuando quito el doctype del sitio el codigo me funciona bien, pero cuando este esta, me manda un error en lineas que incluso solamente es html.

Este es el Doctype que uso:
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
Y este es el codigo javascrip que quiero correr:

Código Javascript:
Ver original
  1. function ajaxFunction(){
  2.     var ajaxRequest;  // The variable that makes Ajax possible!
  3.    
  4.     try{
  5.         // Opera 8.0+, Firefox, Safari
  6.         ajaxRequest = new XMLHttpRequest();
  7.     } catch (e){
  8.         // Internet Explorer Browsers
  9.         try{
  10.             ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
  11.         } catch (e) {
  12.             try{
  13.                 ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
  14.             } catch (e){
  15.                 // Something went wrong
  16.                 alert("Your browser broke!");
  17.                 return false;
  18.             }
  19.         }
  20.     }
  21.     // Create a function that will receive data sent from the server
  22.     ajaxRequest.onreadystatechange = function(){
  23.         if(ajaxRequest.readyState == 4){
  24.             var ajaxDisplay = document.getElementById('ajaxDiv');
  25.             ajaxDisplay.innerHTML = ajaxRequest.responseText;
  26.         }
  27.     }
  28.     var comment = document.getElementById('comment').value;
  29.     var idx = document.getElementById('idx').value;
  30.     var usernamex = document.getElementById('usernamex').value;
  31.     var queryString = "?comment=" + comment + "&idx=" + idx + "&usernamex=" + usernamex;
  32.     ajaxRequest.open("GET", "c_action.php" + queryString, true);
  33.     ajaxRequest.send(null);
  34. }


y aqui esta el html con el que funciona:

Código HTML:
<div id="ajaxDiv">
<form name="myForm">
  <textarea name="comment" id="comment" cols="45" rows="5"></textarea>
  <br /><br />
<input type="hidden" name="idx" value="1111" />
<input type="hidden" name="usernamex" value="maria" />
<input type="button" onclick="ajaxFunction()" value="Send Comment" />
</form>
</div> 
Les agradeceria alguna ayuda o decirme que doctype puedo utilizar con javascrip.

Saludos de antemano.
AD
  #2 (permalink)  
Antiguo 05/03/2010, 15:21
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, 7 meses
Puntos: 1485
Respuesta: Javascript no me funciona cuando coloco el Doctype.

en realidad javascript funciona en cualquier DOCTYPE. lo que si cambia es que cuando el documento tiene DOCTYPE ciertas propiedades no devuelven el valor que devolveria sin DOCTYPE. por ejemplo, la propiedad scrollTop se tiene que leer desde el elemento documentElement y no desde body.

ahora bien, lo que si veo es que estas intentando obtener la referencia de algunos elementos con getElementById pero el elemento no tiene ID. es decir, no confundas el atributo name con id.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 05/03/2010, 15:30
Avatar de saymon  
Fecha de Ingreso: septiembre-2003
Ubicación: Panama
Mensajes: 318
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Javascript no me funciona cuando coloco el Doctype.

A pesar de que no soy experto en javascript, si creo que esta alli el problema en alguna incompatibilidad de javascript con el tipo de doctype, porque tambien pense que podria ser algun tipo de conflicto entre el demas codigo, y fui limpiando y limpiando el codigo hasta que quedé solamente con unas cuantas lineas que solo contiene este javascrip y el form del HTML, a continuacion coloco todo el codigo de la pagina: (en donde me funciona bien solamente quitando la primera linea del doctype)


Código HTML:
<!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>
<script>
function ajaxFunction(){
	var ajaxRequest;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var ajaxDisplay = document.getElementById('ajaxDiv');
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
		}
	}
	var comment = document.getElementById('comment').value;
	var idx = document.getElementById('idx').value;
	var usernamex = document.getElementById('usernamex').value;
	var queryString = "?comment=" + comment + "&idx=" + idx + "&usernamex=" + usernamex;
	ajaxRequest.open("GET", "c_action.php" + queryString, true);
	ajaxRequest.send(null); 
}

</script>
</head>
<body>

<div id="ajaxDiv">
<form name="myForm">
<textarea name="comment" id="comment" cols="45" rows="5"></textarea><br /><br />
<input type="hidden" name="idx" value="1111" />
<input type="hidden" name="usernamex" value="maria" />
<input type="button" onclick="ajaxFunction()" value="Send Comment" />
</form>
</div>

</body>
</html> 
  #4 (permalink)  
Antiguo 05/03/2010, 15:48
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, 7 meses
Puntos: 1485
Respuesta: Javascript no me funciona cuando coloco el Doctype.

la verdad no puedo hacer la prueba porque ahora mismo no poseo un servidor con php, lo que si te sigo recordando es que estas intentando leer un elemento que no tiene ID. al no tener ID, getElementById te devuelve null, seguido intentas leer la propiedad value, y como null no tiene dicha propiedad, entonces te genera error. quizas sin DOCTYPE getElementById tambien lee los elementos por atributo name pero no es lo correcto.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 05/03/2010 a las 15:56
  #5 (permalink)  
Antiguo 05/03/2010, 15:59
Avatar de saymon  
Fecha de Ingreso: septiembre-2003
Ubicación: Panama
Mensajes: 318
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Javascript no me funciona cuando coloco el Doctype.

Muchas gracias ZeroKilled,

Era eso, no habia colocado los ids a los input.

Etiquetas: cuando, doctype
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 11:29.