Foros del Web » Creando para Internet » HTML »

Problema con document.write

Estas en el tema de Problema con document.write en el foro de HTML en Foros del Web. Hola, Mi problema es el siguiente. Para escribir el texto de un campo de una base de datos en mi página utilizo la sentencia document.write, ...
  #1 (permalink)  
Antiguo 20/01/2003, 08:14
Avatar de Ellyza  
Fecha de Ingreso: agosto-2002
Ubicación: España
Mensajes: 176
Antigüedad: 15 años, 3 meses
Puntos: 0
Problema con document.write

Hola,
Mi problema es el siguiente.
Para escribir el texto de un campo de una base de datos en mi página utilizo la sentencia document.write, el problema es que cuando el texto es muy largo me lo escribe todo en una linea en la página con,lo que me deforma todas las tablas.
Alguien conoce alguna forma de ajustar texto en una celda para el método document.write.
Gracias
  #2 (permalink)  
Antiguo 20/01/2003, 09:19
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Hola Ellyza:

Creo que podría funcionar introducir "\n" dentro del texto, que para document.write, equivale a <br> en html puro.

Por lo menos a mi me ha funcionado con las postales, aunque no uso bases de datos.

saludos
  #3 (permalink)  
Antiguo 20/01/2003, 10:24
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Hola Ellyza,

las celdas, por defecto, hacen un autoajuste salvo cuando se les pone el atributo NOWRAP. Fijate que no tengás ese atributo puesto en tu celda.

Lo que no se autoajusta una celda es una palabra en exceso larga.

un saludo
  #4 (permalink)  
Antiguo 20/01/2003, 10:28
Avatar de Ellyza  
Fecha de Ingreso: agosto-2002
Ubicación: España
Mensajes: 176
Antigüedad: 15 años, 3 meses
Puntos: 0
Gracias garicatos, el problema es que no puedo insertar ese /n en el texto ya que, aunque no lo he dicho antes, este texto de la base de datos es enviado por los usuarios. Creo que el problema es que no puedo dejar fija la tabla, por eso se adapta a la longitud del texto, en vez de conseguir que el texto se adapte al ancho de la tabla
Mas sugerencias?
  #5 (permalink)  
Antiguo 20/01/2003, 10:36
Avatar de Ellyza  
Fecha de Ingreso: agosto-2002
Ubicación: España
Mensajes: 176
Antigüedad: 15 años, 3 meses
Puntos: 0
GRacias Tunait

He comprobado lo que dices y en efecto, NO tengo el atributo NOWRAP entre las propiedades de la celda. Es curioso, lo que ocurre es que no soy capaz de fijar el ancho de celda o tabla para que este no varíe.
Sigo intentándolo.
  #6 (permalink)  
Antiguo 20/01/2003, 10:38
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Hum... que cosa extraña ¿hay algun sitio desde donde opder comprobarlo?
  #7 (permalink)  
Antiguo 20/01/2003, 10:48
Avatar de Ellyza  
Fecha de Ingreso: agosto-2002
Ubicación: España
Mensajes: 176
Antigüedad: 15 años, 3 meses
Puntos: 0
Pues lo siento mucho pero no, de todas formas el problema lo tengo con las celdas de la tabla o con la tabla en sí que no puedo fijar su ancho.
Gracias por tu preocupación
  #8 (permalink)  
Antiguo 20/01/2003, 10:50
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Es que a las tablas se les puede fijar una ancho mínimo, pero no máximo así cuando consideran que deben expandirse lo hacen.

Pero es extraño esto que comentas.

¿Cómo sacas los datos de la BD?
  #9 (permalink)  
Antiguo 20/01/2003, 10:56
Avatar de Ellyza  
Fecha de Ingreso: agosto-2002
Ubicación: España
Mensajes: 176
Antigüedad: 15 años, 3 meses
Puntos: 0
Vamos a explicarlo todo:
Lo que intento hacer es un foro. Entonces lo que muestro con document.write son los post de los usuarios que se ingresan en una base de datos todo ello en asp.
Me he fijado que en estos foros tambien ocurre a veces, el margen derecho de las tablas que contienen los post se disparan y tienes que correr el scroll horizontal muchísimo.
Creo que voy a montar la tabla de nuevo quiás así se solucione.
Gracias
  #10 (permalink)  
Antiguo 20/01/2003, 11:07
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
OK, voy captando el asunto.

Mira, aquí cuando eso sucede es cuando se usan los códigos vb para PHP y para Código. En esos dos casos no hace autoajuste de línea respetando la longitud de cada línea.

La otra causa por la que se deforman los mensajes es cuando se ponen palabras muy largas. Si bien una celda te hará un autoajuste en una frase o párrafo, nunca te partirá por el medio una palabra, siempre partira la frase entre dos palabras.


En mis foros apliqué tiempo atrás un script que comprobaba la longitud de las palabras y las rompía cada x caracteres respetando las url's y código (eso antes de enviarlo a la BD). Te lo puedo pasar pero de todas formas el problema que tienes debe de tener otro origen pues parece que te sucede siempre independientemente de la longitud de las palabras.

¿Por qué usas document.write para escribir desde la BD? por que no le pides simplemente que te lo escriba con response.write?
  #11 (permalink)  
Antiguo 20/01/2003, 11:24
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 16 años
Puntos: 60
Así, deprisa y corriendo se me ocurre esto... ¿qué os parece? Tiene un problema: te corta las palabras. Además igual es matar moscas a cañonazos... Espero criticas y complementos a esta incompleta solución.

Código PHP:
<script>

var 
variable="Cuando crecemos solemos hacerlo de dos formas: O bien a lo alto o bien a lo ancho. La primera forma es más propia de la juventud, siendo la segunda más normal para gente de mediana edad. Este último caso puede concurrir también con el primero, lo cual siempre es una desgracia, a no ser que sea buscado por algún motivo.";
var 
fraseHecha=""
var letras=variable.length;
var 
letrasPorLinea=20;
for (
iteracion=0;iteracion<letras;iteracion=iteracion+letrasPorLinea){
fraseHecha=fraseHecha+variable.substring(iteracion,iteracion+letrasPorLinea)+"\n";
}
alert(fraseHecha);

</script> 
Saludos!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #12 (permalink)  
Antiguo 20/01/2003, 11:36
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
(Ala que lejos me quedan los emoticones!)


Hombre el script es bueno pero el resultado es un tanto.... extraño? al menos que le ponga un guioncito al final

En serio, salvo lo de las palabras largas.... por lo demás no habría de sucederle lo que le pasa, o sería un problema común a todos los foros.

Hay que poner cuidado a la hora de aplicar un script en estos casos o puede ser desastroso el resultado, cortar links, código....

Lo que fastidia yá que estos foros nos separen java de script cuando lleva los dos puntos detrás... imagina un script partiendo todas las palabras alegremente

p.d. lo que más me ha gustado es el valor da la variable variable
p.d.2. Aish no encuentro el boton de enviar...
  #13 (permalink)  
Antiguo 20/01/2003, 11:52
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 16 años
Puntos: 60
Esperate!

Y si se pone...
<html>
<head>
<title>Tabla</title>
<script>
variable=new Array;
variable[0]="Esto es una celda"
variable[1]="Esto es otra celda"
variable[2]="Esto, aunque parezca mentira es una tercera celda"
variable[3]="dgfdfgfd df sdf sf sdf sf sdf sdfsdf sdf sdf sdf sdf sf sdf sfsdf sdf sdf sdf sd fsdf sf sdfs d fsd fsf sdf sdf fdffdfdf"
variable[4]="Perdón por lo anterior"
variable[5]="Esto es otra celda (muy bonita, por cierto)"
variable[6]="A esta celda le tengo especial cariño"
variable[7]="Con esta celda hice mi primer innerHTML"
variable[8]="---------------------------------------------"

</script>
</head>

<body>
<TABLE border=1 style="font:bold 10px/15px verdana; width:300px;word-break: break-all;;text-align:left; overflow:auto">
<script>
for(a=0;a<variable.length;a++){
document.write("<tr><td>"+variable[a]+"</td></tr>");
}
</script>
</table>
</body>
</html>

Eh? Así funciona... o se me pasa algo...? Lo malo es que funciona solo en IE 5.5 y superior...

Siento lo de los botones...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 20/01/2003 a las 12:18
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:58.