Foros del Web » Programando para Internet » Javascript » Frameworks JS »

salto de linea inesperado

Estas en el tema de salto de linea inesperado en el foro de Frameworks JS en Foros del Web. Espero entendais el problema. Tengo un script que mediante prototype.js modifica el contenido de un DIV en función de si un registro existe o no. ...
  #1 (permalink)  
Antiguo 25/03/2011, 06:52
Avatar de julliop  
Fecha de Ingreso: septiembre-2006
Ubicación: Asturias, patria querida
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
salto de linea inesperado

Espero entendais el problema.

Tengo un script que mediante prototype.js modifica el contenido de un DIV en función de si un registro existe o no.

el div es éste (lo cargo con php):

Código PHP:
Ver original
  1. echo '<div id="otroDiv"name="otroDiv"></div>';

una vez modificado el div, al enviar el formulario (onSubmit) compruebo lo que tengo en ese div, para permitir o no enviar el formulario. En el codigo indico como recupero los datos del div.

Código Javascript:
Ver original
  1. var otroDiv=document.getElementById('otroDiv');            
  2. var texto = otroDiv.innerHTML;
  3. alert (texto+"prueba"+texto); // no lo uso, es para explicar el problema

Bien, cuando quería comparar con texto cualquier cadena de texto, nunca me funcionaba el if, entonces probe a mostrar texto, al principio no caia, puesto que me mostraba el contenido del div perfecto, pero después cai en que me estaba metiendo un salto de línea.

El alert anteriormente destacado muestra algo asi:(suponiendo texto="ok")

ok
pruebaok

¿Por qué me aparece ese salto de línea?¿Como lo quito o soluciono el problema?

También mencionar que el cuando veo el contenido del div en php/html, no se ve ese salto de línea, por lo que deduzco que se produce al "leer" con javascript del div

Gracias de antemano.
  #2 (permalink)  
Antiguo 25/03/2011, 08:36
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 14 años, 11 meses
Puntos: 1485
Respuesta: salto de linea inesperado

buenas...

lo mas seguro ese salto de linea viene de php ya que es este quien esta generando el contenido. tambien puede haber otros factores dependiendo de como has de agregar el contenido. por ejemplo, si utilizas funciones DOM para agregar el contenido al <div> sin reemplazar su contenido actual, pudiera ser que en el codigo fuente de html tengas el salto de linea. o sea, algo similar a...
Código:
<div>
</div>
pero si el contenido lo agregas con innerHTML sin recuperar el contenido actual, entonces el salto de linea debe venir de php.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 25/03/2011, 09:13
Avatar de julliop  
Fecha de Ingreso: septiembre-2006
Ubicación: Asturias, patria querida
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: salto de linea inesperado

gracias zerokilled,
te doy más info, desde uno.html llamo una función que está en func.js, hay tengo este codigo:

Código Javascript:
Ver original
  1. var url = "http://localhost:8888/pro/ajax_comprobar_otro.php";  
  2.                 var pars= ("nickname=" + otro);
  3.                 var myAjax = new Ajax.Updater( 'otroDiv', url, { method: "get", parameters: pars });

ese codigo conecta a ajax_comprobar_otro.php mediante prototype.js y devuelve la respuesta a la capa <div id="otroDiv"></div>.

el contenido de ajax_comprobar_otro.php

Código PHP:
Ver original
  1. $nick=$_REQUEST['nickname'];  
  2. $tam=strlen($nick);
  3.  
  4. if ($tam==0)
  5. {
  6.     echo "";
  7. }
  8. else
  9. {    
  10.     $conexion=**********
  11. //conexion al servidor
  12.     mysql_select_db("pro",$conexion) or die("Problemas en la seleccion de la base de datos"); //conexion a la base de datos
  13.  
  14.     $res=  mysql_query("select nombre from tipo where nombre='$nick'",$conexion)or die("Problemas en el insert".mysql_error());
  15.     $total=mysql_num_rows($res);  
  16.     $mostrar=mysql_fetch_array($res);
  17.  
  18.     if($total>0)  
  19.     {  
  20.       // El tipo existe en la Base de Datos
  21.         echo "Esa galeria ya existe";
  22.     }  
  23.     else
  24.     {
  25.         echo "ok";
  26.     }
  27. }

Además, lo que me dices que php genera el salto de línea, yo también lo creo, pero es que el codigo después de modificar la capa, no muestra ese salto...

lo que comentas del DOM me pillas en fuera de juego...
  #4 (permalink)  
Antiguo 25/03/2011, 09:21
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 14 años, 11 meses
Puntos: 1485
Respuesta: salto de linea inesperado

segun lo que veo, el codigo php no parece insertar el salto de linea. quizas sea la forma como prototype.js agrega el contenido.
Cita:
Bien, cuando quería comparar con texto cualquier cadena de texto, nunca me funcionaba el if,
puedes atacar el problema de otra forma. en lugar de comparar directamente el string con otro, utiliza expresiones regular para determinar si existe la secuencia requerida. de este modo, no importa si existe el salto de linea o no, te debe funcionar.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 25/03/2011, 10:25
Avatar de julliop  
Fecha de Ingreso: septiembre-2006
Ubicación: Asturias, patria querida
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: salto de linea inesperado

muchas gracias por las molestias zerokilled.

¿como hago lo que me comentas de utilizar expresiones regulares?
¿no se podría hacer de alguna manera similar a cuando se usa el * en una busqueda? algo así if(texto==("ok"+*)) ?? (esto no funciona,X|)

Otras 2 cosas,
1, creo que es el innerHTML quien me introduce el salto de linea, en ese caso no se podría "leer" el div de otra manera?
2, probe con un != en vez de == para que ver si me devolvía algo y no me devolvió nada, (era un else if()), lo saque fuera a un if() nuevo y ahora si me funciono, el != digo eh

gracias de nuevo por tu paciencia
  #6 (permalink)  
Antiguo 25/03/2011, 11:04
Avatar de julliop  
Fecha de Ingreso: septiembre-2006
Ubicación: Asturias, patria querida
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: salto de linea inesperado

Código Javascript:
Ver original
  1. var texto=document.getElementById('otroDiv').childNodes[0].nodeValue;

usando ésta sentencia también me coge el salto de línea, lo que me hace pensar que debe ser prototype quien mete el salto de línea...
  #7 (permalink)  
Antiguo 25/03/2011, 11:09
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 14 años, 11 meses
Puntos: 1485
Respuesta: salto de linea inesperado

Cita:
¿no se podría hacer de alguna manera similar a cuando se usa el * en una busqueda? algo así if(texto==("ok"+*)) ?? (esto no funciona,X|)
fijate que los buscadores son una aplicacion, de modo que sus caracteristicas no necesariamente sean las mismas a los metodos de busqueda en los lenguaje. mas bien, el conjunto de las funciones es lo que hace posible la aplicacion.

Cita:
creo que es el innerHTML quien me introduce el salto de linea, en ese caso no se podría "leer" el div de otra manera?
hay diferentes formas de leer contenido, la mayoria de ellas basada en el DOM. por ejemplo, a traves de los nodos Text tienes la propiedad nodeValue o textContent. de todos modos, creo que estas buscandole las cinco patas al gato. quiero decir, con innerHTML me parece suficiente.

Cita:
¿como hago lo que me comentas de utilizar expresiones regulares?
nada tan complicado. solo creas la expresion regular y utilizas el metodo test. este te devolvera un boolean si el patron encuentra alguna coincidencia en el string.
Código:
// el ancla \boundary es para determinar que la frase existe 
// como una palabra sola y no como un conjunto de una palabra
/\bok\b/i.test(string);
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 25/03/2011, 11:44
Avatar de julliop  
Fecha de Ingreso: septiembre-2006
Ubicación: Asturias, patria querida
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: salto de linea inesperado

solucionado un problema.
lo que en realidad me hacía era además del texto introducirme dos espacios y un salto de línea.

Utilice ésta sentencia mencionada por JavierB en este hilo:
http://www.forosdelweb.com/f13/usar-...enters-567493/


Código Javascript:
Ver original
  1. texto = texto.replace(/\n/g,' ');

para cambiar el salto de línea por un espacio, después comparo (en mi caso) con "ok ", es algo cutre, pero...

ahora me queda un problema que nunca me pasara, ese if no me funciona si es un else if en el que no se cumple ninguna condición, que puede ser?

saludos
  #9 (permalink)  
Antiguo 25/03/2011, 17:47
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 9 meses
Puntos: 310
Respuesta: salto de linea inesperado

Hombre pero es más fácil y sobre todo elegante hacerlo con expresiones regulares.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Etiquetas: document, getelementbyid, innerhtml, javascript, prototype
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 09:17.