Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cambiar el backgroundColor del body.

Estas en el tema de Cambiar el backgroundColor del body. en el foro de Javascript en Foros del Web. Hola, desde una ventana abro otra ventana y usando DOM aplico un color de fondo al <body> de la nueva ventana, el código es algo ...
  #1 (permalink)  
Antiguo 12/10/2014, 10:35
 
Fecha de Ingreso: abril-2010
Mensajes: 68
Antigüedad: 14 años
Puntos: 0
Cambiar el backgroundColor del body.

Hola, desde una ventana abro otra ventana y usando DOM aplico un color de fondo al <body> de la nueva ventana, el código es algo como esto:

window.onload=function() {
var actionfrm = document.getElementById("frmVentana").setAttribute ("action","javascript:nuevaVentana()");
}
function nuevaVentana() {
......
var color = document.getElementById("txtColor").value;
......
var nuevaventana = "<!DOCTYPE HTML><html><head><title>"+nombre+"</title>";
......
ventana = window.open("", nombre, atributos);
ventana.window.status = "true";
ventana.document.open();
ventana.document.writeln(nuevaventana);
ventana.document.body.style.backgroundColor=color; //OJO AQUI //
ventana.document.close();
}
y va bien, pero antes de usar la instruccion "ventana.document.body.style.backgroundColor=color ;" pase por probar con variantes como:

ventana.document.body.setAttibute("style").backgro undColor=color; ó
var v = ventana.document.body.getAttibute("style");
v.backgroundColor=color; etc

y no me funcionaba, parece que tengo algun error de concepto. Al final si va con una ¿ porque insistir con otras ?, pues aprender bien a trabajar con DOM. ¿ Me explican porque las otras variantes no me funcionaban ?. Gracias y saludos a todos.
  #2 (permalink)  
Antiguo 12/10/2014, 11: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
Puntos: 1485
Respuesta: Cambiar el backgroundColor del body.

buenas,
no te funciona con las demás variantes, esencialmente porque cada propiedad representa una parte distinta del API de DOM. la propiedad style de cualquier elemento representa un objeto CSSStyleDeclaration y ésta contiene la serie de propiedades de CSS. por contraste, element.getAttribute devuelve un string que lee directamente del código html. mas o menos, lo mismo hace element.setAttribute, crea una entrada en el mapa de atributos del elemento. en algunos navegadores, esto suele crear algún efecto pero en otros no. en esos casos, debe ser porque setAttribute no está directamente vinculado con la parte del DOM que se ha intentado modificar.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 12/10/2014, 11:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Cambiar el backgroundColor del body.

Tu script
Cita:
ventana.document.body.setAttribute("style").backgro undColor=color;
En los manuales vemos que setAttribute() recibe dos parametros, nombre y valor

elementNode.setAttribute(name,value)

El problema de style es que no es un attributo normal, nombre/valor, sino que se podria ver como un array de valores con su nombre.

Código HTML:
Ver original
  1. <div id="unDiv" style="position:absolute;z-index:0;text-align:right; width:100%">

si tienes esto y haces

Código Javascript:
Ver original
  1. document.getElementById("unDiv").setAttribute("style","background-color: blue;");

funcionará pero pasara a

Código HTML:
Ver original
  1. <div id="unDiv" style="background-color: blue;">

con lo que quizas pierdes algo. En cambio si haces

Código Javascript:
Ver original
  1. document.getElementById("unDiv").style.backgroundColor="blue";

ahora será

Código HTML:
Ver original
  1. <div id="unDiv" style="position:absolute;z-index:0;text-align:right; width:100%;background-color: blue;">

mejor, no?



Y la ultima opción que mencionas getAttribute() leemos en el manual

Cita:
Syntax

var attribute = element.getAttribute(attributeName);

where

attribute is a string containing the value of attributeName.
attributeName is the name of the attribute whose value you want to get.
copmo puedes ver el resultado es un string que contiene el valor del atributo solicitado, es una cadena de texto que si la cambias solo haces eso cambiar una cadena de texto.

Que mejor que unos ejemplos

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Documento sin título</title>
  5. <script type="text/javascript">
  6.  function cambiaColor1(){
  7.     document.body.style.backgroundColor="red";
  8.  }
  9.  function cambiaColor2(){
  10.     document.body.setAttribute("style","background-color: blue;");
  11.  }
  12.  function cambiaColor3(){
  13.     var v = document.body.getAttribute("style");
  14.         alert(v);
  15.         if(v!="background-color: green;"){
  16.                 v="background-color: green;";
  17.             }else{
  18.                 v="background-color: yellow;";
  19.                 }
  20.         document.body.setAttribute("style",v);
  21.  }
  22. </head>
  23. <input name="bot1" type="button" id="bot1" onClick="cambiaColor1();" value="document.body.style.backgroundColor" />
  24. <br />
  25. <input name="bot2" type="button" id="bot2" onClick="cambiaColor2();" value="setAttribute" />
  26. <br />
  27. <input name="bot3" type="button" id="bot3" onClick="cambiaColor3();" value="getAttribute+alert+setAttribute" />
  28. </body>
  29. </html>

(en FIREFOX funciona)


Edito: @zerokilled sabe más que yo y es mas rapido, por suerte no nos contradecimos del todo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 12/10/2014 a las 11:45
  #4 (permalink)  
Antiguo 12/10/2014, 12:40
 
Fecha de Ingreso: abril-2010
Mensajes: 68
Antigüedad: 14 años
Puntos: 0
Respuesta: Cambiar el backgroundColor del body.

Muchas gracias a zerokilled y quimfv, vuestras respuestas han sido muy claras, creo que he aprendido un poquito mas acerca de DOM. Saludos.

Etiquetas: funcion, html
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 19:02.