Foros del Web » Programando para Internet » Javascript »

¿Tendria que utilizar ajax? (ver código dentro del tema)

Estas en el tema de ¿Tendria que utilizar ajax? (ver código dentro del tema) en el foro de Javascript en Foros del Web. Código: <script language="javascript"> var NombreEscuderia = function (n){ this.n = n; this.changeN = function(N){ this.n = N; } this.Escuderia = function(){ switch (this.n) { case ...
  #1 (permalink)  
Antiguo 01/04/2012, 16:04
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
¿Tendria que utilizar ajax? (ver código dentro del tema)

Código:
<script language="javascript">

var NombreEscuderia = function (n){
	
	this.n = n;
	
    this.changeN = function(N){
		this.n = N;
	}
	
	this.Escuderia = function(){
		switch (this.n) { 
   			 case 1: 
      		 document.writeln("Texto de prueva");
      		 break
			 
			 case 2: 
      		 document.writeln("Texto de prueva 2");
      		 break
		
		  	 default:
			 document.writeln("Texto de prueva default");
	}
	}
	
	

}

var NombreDefecto = new NombreEscuderia(0);


</script>

</head>

<body>
	<div id="menu" onmouseover="NombreDefecto.changeN(2)"</div><script language="javascript">NombreDefecto.Escuderia()</script></div>
    </div>

</div>
Este codigo es totalmente funcional, al 100% gracias a zerokilled! , pero no acaba de cumplir toda su funcion, ya que el texto del div "menu" que se muestra llamando al metodo de clase:

NombreDefecto.Escuderia()

No hace que cambie el texto cuando el evento onmouseover lanza:

"NombreDefecto.changeN(2)" // este cambia el valor de n que a su vez hacer que swich cambie el texto a mostrar.

es decir , el codigo si es correcto pero el texto no cambia ¿por que? ¿tendria que utilizar ajax? ¿o volver a llamar a la función que escribe el texto,? ¿y como lo haria?
  #2 (permalink)  
Antiguo 01/04/2012, 17:37
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
Puntos: 1485
Respuesta: ¿Tendria que utilizar ajax? (ver código dentro del tema)

¡buenas!
primero a tu pregunta inicial, ¿tendría que utilizar ajax? no en tu caso, aunque se puede. es un no porque el contenido a mostrar no lo requiere. el contenido que vas a mostrar es estático o simple. o sea, no se trata de una situación donde tienes que traer contenido dado a unas condiciones complejas y/o que tengas que extraerlo de un archivo en el servidor o una base de datos. se puede hacer a modo de práctica pero considero que estarías utilizando mal las tecnologías. en todo caso, en la etapa que te encuentras actualmente podría resultarte más complejo. esto lo asumo dadas las dudas en el tema anterior y éste. también agrego que asumo tienes experiencia en otro lenguaje (aparentemente C++) y debes haberte dado cuenta que la forma de pensar/escribir es muy distinta. principalmente cuando se busca interacción entre usuario/aplicación se utiliza un esquema basado en eventos.

ahora a tu código. en el tema anterior no tenía claro que exactamente intentas lograr, pero ahora veo que quieres hacer algo así como mostrar contenido por capas o niveles. hay multitudes de formas de hacerlo pero no todas se consideran adecuadas. todo depende de tu perspectiva, enfoque o requisito. por ejemplo, la forma que lo estás haciendo es muy complicado tanto de desarrollar como de mantener. además, no es una buena práctica por otros factores como la accesibilidad. en este caso particular estas basando el contenido enteramente en javascript y debes saber que hay navegador que no tienen javascript y otros lo tienen desactivado. pero a la misma vez, también puede ser un buen ejercicio para desarrollar el intelecto a traves de experimentaciones y asociarse a su uso y limitaciones. por eso comentaba al inicio que depende de tu enfoque. no lo veo mal, solo que te recomendaría no acostumbrarte a la práctica inadecuada.

el primer problema en tu código y lo que realmente lo complica es el document.write (write y writeln son lo mismo, solo que el último introduce un salto de linea a nivel de código fuente cuando escribe el contenido). document.write tiene un efecto muy indeseable... cuando el stream de contenido que recibe el navegador se cierra, write tiene que volver abrirlo y esto causa que todo lo que antes tenía cargado se desecha de la memoria y la pantalla para así volver a escribir el nuevo contenido. incluso si lograras mantener abierto el stream para erradicar ese defecto, write te seguirá siendo inútil porque las próximas invocaciones imprime el resultado al final (esto si estuvieras usando el modelo de eventos).

error de concepto. aparentemente tienes la idea de que cuando se inicia el evento y este invoca changeN, es cuando se interpreta el elemento <script> que a su vez invoca al método Escuderia. pues lo cierto es que así no es como funciona. el navegador carga e interpreta el contenido de forma lineal con excepción de algunos recursos externos. en tu caso el evento no se inicia porque este tiene que ser activado por el usuario, pero el elemento <script> se interpreta. de modo que posiblemente en pantalla debes ver el texto "Texto de prueva default". luego, cuando finalmente el evento ocurre, el método solamente altera el valor de una propiedad pero no invoca el método que escribe en pantalla el contenido, o sea Escuderia(). en todo caso, invocarlo no te va servir por lo que antes expliqué, write limpia el contenido del navegador.

¿qué debes hacer? aquí es donde DOM (Document Object Model) juega un papel importante. el DOM te permite acceder a información del contenido y manipularla sin afectar otras áreas o solo afectando una porción de ella. visualizalo de esta manera, DOM es la representación del código fuente pero en forma binaria (o de memoria) estructurado de forma jerárquica. básicamente el DOM lo accesas por objetos predispuestos o por ciertos métodos para llegar a un punto particular de los elementos. entre las propiedades de los elementos tienes innerHTML el cual te muestra el código fuente interno de ese elemento en particular. a la misma vez lo puedes manipular y el navegador se encargará de analizarlo y mostrar los cambios. para que te hagas una idea usando más o menos lo que tienes pero adaptado con DOM. en el evento estoy usando onclick pero también puede ser otros tipos de eventos.

Código:
<script type="text/javascript>
var NombreEscuderia = function (n){
this.n = n;
this.changeN = function(N){
this.n = N;
}

this.Escuderia = function(){
var element = document.getElementById('container');
		switch (this.n) { 
   			 case 1: 
      		 element.innerHTML = "Texto de prueva";
      		 break
			 
			 case 2: 
      		 element.innerHTML ="Texto de prueva 2";
      		 break
		
		  	 default:
			 element.innerHTML = "Texto de prueva default";
	}
}
}

var NombreDefecto = new NombreEscuderia(0);

</script>
<div><button onclick="NombreDefecto.changeN(1);">1</button>
<button onclick="NombreDefecto.changeN(2);">2</button>
<button onclick="NombreDefecto.changeN(3);">3</button>
<button onclick="NombreDefecto.Escuderia();">mostrar</button></div>

<div id="container"></div>
para finalizar, no tengo idea de que material estas leyendo aunque sospecho que uno bien obsoleto. te recomendaría que busques otros materiales. por ejemplo, librosweb.es puede ser un buen inicio. lee los libros javascript y ajax, aunque en ajax te recomendaría que por el momento ignores lo relacionado a ajax. sucede que ese libro contiene material que a mi juicio debería ir en javascript porque no esta directamente relacionado con ajax en si.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 01/04/2012, 17:58
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Busqueda Respuesta: ¿Tendria que utilizar ajax? (ver código dentro del tema)

:O me sorprende la capacidad analitica que posees! , gracias por tu ayuda de nuevo!

Bueno de hecho aprendí C++ hace dos años, hace algo de 3 meses escasos me puse a aprender html, y junto a html empece a entender Javascript.

Tengo que decir que hace un año empece Java, pero en comparacion con C++ y Java, Javascript me resulta muy versatil y pracmatico, La organizacion por clases de Java me parece simplista y inficaz teniendo referente a C++ que es el lenguaje mas optimo y en el que mas me gusta escribir.

No se si te sonará Illasaron o videotutoriales, Empece a aprender Javascript de esta pagina, el contenido es del 2006 ¿que me estoy perdiendo?
  #4 (permalink)  
Antiguo 01/04/2012, 21:45
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
Puntos: 1485
Respuesta: ¿Tendria que utilizar ajax? (ver código dentro del tema)

no conozco illasaron ni videotutoriales, principalmente porque los materiales que busco son literarios y en inglés. desgraciadamente no te puedo recomendar un lugar específico que sea lo suficientemente completo en tutoriales y referencias, y menos aún que sea español. muchos de los que aprendemos desarrollo front-end, en particular javascript, aprendemos del lenguaje obteniendo información de diferentes materiales. si buscas tutoriales de javascript y html, te vas a encontrar tanto con material obsoleto como material actualizado. a eso sumale tienes que ingeniartelas para saber discernir si el material es obsoleto o no. por suerte existen los estándares para estas tecnologías, pero por "desgracia" la documentación suelen ser muy pesados en detalles técnicos. lo que sucede es que esas documentaciones no están dirigidas a los usuarios que desarrollan en esa tecnología, sino que están enfocadas para los desarrolladores que implementan la tecnología en sus productos. por lo que enviarte a leer la documentación de ECMAScript (estándar en que se basa javascript) o W3C (organismo que maneja el estándar de otras tecnologías como HTML, CSS, DOM, etc) no es adecuado en este momento.

para aprender javascript no hace falta que aprendas a manejar otros estándares. por ejemplo, tu puedes usar la consola de un navegador (firebug o el WebDeveloper Tool en firefox o chrome) para escribir tus códigos y probarlos. pero en este caso estarías centrandote específicamente en javascript y poco puedes hacer para agregar interacción. en parte no esta mal porque así profundizas en el lenguaje, pero a corto plazo te verás en la necesidad de hacerlo interactivo. es ahí donde tienes que comenzar adentrarte en el DOM. te recomendaría que como punto de partida comiences por Mozilla Development Network ya que suelen estar más a la par con prácticas aceptables. en inglés tienes más tutoriales y referencias.

aún no tengo claro cuales son los videos que estás viendo, pero encontre uno de título Curso XHTML, CSS y Javascript por Outkast. que me disculpe el autor y sus seguidores, pero pese a que aparentemente son del 2011, revisé en saltos dos videos y me fijé que la explicación de algunas cosas no es la correcta. puede que estoy saltando a conclusiones antes de tiempo... en lo personal, no te lo recomiendo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 02/04/2012, 14:02
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: ¿Tendria que utilizar ajax? (ver código dentro del tema)

Efectivamente, has dado en el clavo, Outkas es el webmaster de Illasaron y videotutoriales, que es la web sobre videotutoriales mas visitada por hispanohablantes.
+
Aunque tengo que advertirte de nuevo , que aunque Outkas ha subido en 2011 sus videos a youtube, EL CONTENIDO de estos es del 2006 es decir el los creo en 2006 (el ce Javascripy y CSS).


Ya habia empezado a trastear con el Document Objec Model, desde hace unas semanas, reconzco que se me antoja muy grande y con muchas posibilidades que tardare algun tiempo en dominar, pero gracias a la labor de Outkas yo pude empezar a ver javascript.

En realidad outkas adapta el contenido para gente primeriza, tenlo en cuenta.


Yo se ingles, mi mi madre es profesora en un insituto y es licenciada en filologia inglesa, asi que desde peque me he desenvuelto bien, si lo consideras oportuno, puedes recomendarme medios anglosajones.


Por cierto, yo me documento practicamente todos los dias sobre nuevas cosas en WC3, que ademas de estar en la lengua original (ingles) tiene una documentacion muy precisa y definida.

Etiquetas: ajax, 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 11:11.