Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cambiar los atributos de una caja

Estas en el tema de Cambiar los atributos de una caja en el foro de Javascript en Foros del Web. ¿Por que no funciona? CSS: Código HTML: #menucv1, #menucv2, #menucv3, #menucv4 { background-color: #7C95FD; font-family: "Roboto-Bold"; text-align: center; vertical-align: middle; position: relative; border: 1px solid ...
  #1 (permalink)  
Antiguo 20/01/2016, 09:18
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Cambiar los atributos de una caja

¿Por que no funciona?

CSS:

Código HTML:
#menucv1, #menucv2, #menucv3, #menucv4
	{
		background-color: #7C95FD;		
		font-family: "Roboto-Bold";
		text-align: center;		
		vertical-align: middle;
		position: relative;		
		border: 1px solid #000;	
		box-sizing: border-box;		
		width: 25%;
		height: 30px;
		float: left;
	}
JavaScript:

Código PHP:
if($_GET['valor']) 
    {    
        
$valor $_GET['valor'];
    }
    else 
    {
        
$valor 1;    
    }

echo
'

<script type="text/javascript">

    var menucv = "menucv'
.$valor.'";
    alert(menucv);
    document.getElementById(menucv).style.backgroundColor = "#5677FC";
   document.getElementById(menucv).style.borderStyle = "inset";
   alert("Adios");   
</script>

'

HTML:

Código HTML:
<div id="menucv1"><a href="cv.php?valor=1" target="contenedor">Experiencia Profesional</a></div>
	<div id="menucv2"><a href="cv.php?valor=2" target="contenedor">Estudios</a></div>
	<div id="menucv3"><a href="cv.php?valor=3" target="contenedor">Idiomas</a></div>
	<div id="menucv4"><a href="cv.php?valor=4" target="contenedor">Otros</a></div> 
Me muestra correctamente el primer alert, me muestra la variable, pero de ahí no pasa. ¿Estoy haciendo algo mal?

Saludos


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #2 (permalink)  
Antiguo 20/01/2016, 10:25
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: Cambiar los atributos de una caja

El problema es entre el PHP y el JS


No te sirve leer la variable GET de la URL directamente del head en el JS??


LEER URL JS
  #3 (permalink)  
Antiguo 20/01/2016, 10:36
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cambiar los atributos de una caja

O para que no te compliques más, toma al elemento por el inicio de su identificador:
Código Javascript:
Ver original
  1. document.querySelector("[id^=menucv]").style.propiedad = valor;

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 21/01/2016, 07:59
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Cambiar los atributos de una caja

Código HTML:
<script type="text/javascript">

	function getUrlVars()
	{
	    var vars = [], hash;
	    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	    for(var i = 0; i < hashes.length; i++)
	    {
	        hash = hashes[i].split('=');
	        vars.push(hash[0]);
	        vars[hash[0]] = hash[1];
	    }
	    return vars;
	}	
	
	window.onload = getUrlVars();
	var first = getUrlVars()["valor"];	
	var menucv = "menucv" + first;
	
	document.getElementById("menucv").style.backgroundColor = "#5677FC";
   document.getElementById("menucv").style.borderStyle = "inset";
   /*document.querySelector("[id^=menucv]").style.backgroundColor = "#5677FC";
   document.querySelector("[id^=menucv]").style.borderStyle = "inset";*/
	
</script> 
Con lo que me comenta ZedGe1505 ya me devuelve bien la variable menucv, pero no hace nada, el estilo de la caja no cambia, he probado lo de Alexis88 y tampoco.

No se si tendrá que ver, pero esta página la cargo a través de un iframe y se encuentra dentro de una carpeta, no en la raíz.


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #5 (permalink)  
Antiguo 21/01/2016, 08:12
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: Cambiar los atributos de una caja

Es un poco difícil ver el error sin todo el código, prueba pasando la URL en bruto para ver si es ese el problema o no.

También puedes usar el depurador de chrome Ctrl+MAYUS+I, muchas veces te muestra el problema en la consola.
  #6 (permalink)  
Antiguo 21/01/2016, 08:41
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Cambiar los atributos de una caja

Cita:
Iniciado por ZedGe1505 Ver Mensaje
También puedes usar el depurador de chrome Ctrl+MAYUS+I, muchas veces te muestra el problema en la consola.
Gracias, el error que aparece cuando cliclo en algunas de los enlaces es este:

Uncaught TypeError: Cannot read property 'style' of null

Osea como si en:

document.getElementById(menucv).style.backgroundCo lor = "#5677FC";

hubiese algo mal o no le llegase la variable.


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #7 (permalink)  
Antiguo 21/01/2016, 09:11
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Respuesta: Cambiar los atributos de una caja

Claro es por que tienes

Código Javascript:
Ver original
  1. document.getElementById("menucv").style.backgroundColor = "#5677FC";

Estas diciendo que busque un elemento con id "menucv" y tu no tienes ese elemento..
Debes sacarle las comillas si quieres que tome tu variable
  #8 (permalink)  
Antiguo 21/01/2016, 09:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cambiar los atributos de una caja

Seguramente tienes el script en la cabecera del documento, por lo que termina de cargar antes de que aparezca el elemento y por lo tanto no lo afecta. Coloca el script al final del documento, justo antes de la etiqueta </body> o envuelve todo el código dentro de esto:
Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded", function(){
  2.     //El código
  3. }, false);

Así se ejecutará el script luego de que hayan cargado todos los elementos del documento.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 21/01/2016, 10:16
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Cambiar los atributos de una caja

Cita:
Iniciado por ZedGe1505 Ver Mensaje
Claro es por que tienes

Código Javascript:
Ver original
  1. document.getElementById("menucv").style.backgroundColor = "#5677FC";

Estas diciendo que busque un elemento con id "menucv" y tu no tienes ese elemento..
Debes sacarle las comillas si quieres que tome tu variable
Ya de eso ya me di cuenta, ahora he probado de 2 formas:

Código HTML:
document.getElementById(menucv).style.backgroundColor = "#5677FC";

document.menucv.style.backgroundColor = "#5677FC";
Las 2 formas me devuelven el error:

Código:
Uncaught TypeError: Cannot read property 'style' of undefined

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #10 (permalink)  
Antiguo 21/01/2016, 10:24
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Cambiar los atributos de una caja

Cita:
Iniciado por Alexis88 Ver Mensaje
Seguramente tienes el script en la cabecera del documento, por lo que termina de cargar antes de que aparezca el elemento y por lo tanto no lo afecta. Coloca el script al final del documento, justo antes de la etiqueta </body> o envuelve todo el código dentro de esto:
Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded", function(){
  2.     //El código
  3. }, false);

Así se ejecutará el script luego de que hayan cargado todos los elementos del documento.

Un saludo
Pues he probado las 2 opciones, ponerlo al final o meter la función que me indicas y tanto una cosa como la otra me hace una cosa muy rara, solo funciona con el 3 elemento con el resto no hace nada.


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #11 (permalink)  
Antiguo 21/01/2016, 10:29
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Respuesta: Cambiar los atributos de una caja

Ya funciona, he quitado un alert() y ha empezado a funcionar sin problemas. Gracias a los 2


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332

Etiquetas: atributos, caja, funcion, html, php, valor
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 15:07.