Ver Mensaje Individual
  #6 (permalink)  
Antiguo 21/10/2010, 15:38
furoya
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: duda en script muy sencillo

O con currentStyle. También existe runtimeStyle, pero es para estilos aplicados con JS. Al final dejo un link que explica cómo y dónde se usan, con algún ejemplo.

Aunque en este caso no es necesario usar ninguna. Ya que pasé por aquí a poner el enlace aprovecho el mensaje y te cuento por qué debes usar dos clicks, emprear. Seguro que si te detenías a pensarlo 2 minutos también lo descubrías.

Supongamos que tienes el siguiente párrafo en el body :

Código:
<p id="miParrafo"> QWERTYUIOP.</p>
Y en la hoja de estilos tiene asignado un color rojo, así

Código:
<style>
#miParrafo {color:red; }
</style>
Ahora se te ocurre agregar un botón que llame a la función que te permite alternar el color al párrafo entre 'rojo' y 'verde'

Código:
<input type=button id="rojoVerde" value="Alterna Color" onclick="cambia()">
Y esa función es

Código:
<script>
function cambia() {
 if (document.getElementById('miParrafo').style.color == 'red') {
  document.getElementById('miParrafo').style.color = 'green';
 }
 else {
  (document.getElementById('miParrafo').style.color = 'red';
 }
}

</script>
La lógica es así : "Si en el documento hay un elemento con el identificador 'miParrafo' que tiene el estilo de color 'red', entonces al elemento con el identificador 'miParrafo' se le pone el estilo de color 'green'; de cualquier otra forma, al elemento con el identificador 'miParrafo' se le pone el estilo de color 'red'."
El punto, tal como explicaron más arriba, es que en nuestro ejemplo el elemento no tiene metido ningún estilo, porque se lo damos desde la etiqueta <style>. Para que "(getElementById('miParrafo')" lo encuentre debería estar como

Código:
<p ... style="color: red;">
Por lo tanto, a la pregunta del escript sobre si la condición de "getElementById('miParrafo').style.color" es igual a "red", la respuesta será No, ni "red", ni "green", ni nada. Porque no tiene ningún "style=''" como atributo.
Así que la función toma el siguiente camino, que es ponerle en forma dinámica el "style='color: red;'".
Ahora sí tiene el atributo, pero para quien lo mira, con ese atributo no cambia nada, porque desde la hoja de estilos o desde un estilo in line el texto sigue de color rojo. Entonces en el siguiente click ya encuentra el atributo con su valor; y como es 'red' lo cambia a 'green'.

La solución es la más simple de todas :

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>ALTERNA ENTRE ROJO Y VERDE.</title>

<script type="text/javascript">
function cambia() {
 if ((document.getElementById('miParrafo').style.color) == 'green') {
  document.getElementById('miParrafo').style.color = 'red';
 }
 else {
  document.getElementById('miParrafo').style.color = 'green';
 }
}

</script>
<style type="text/css">
#miParrafo {color:red; }

</style>
</head>
<body>
<p id="miParrafo"> QWERTYUIOP.</p>
<input type=button value="Alterna Color" onclick="cambia()">

</body>
</html>
visualizar un atributo de un estilo

Interpretar una clase CSS por medio de Javascript

Texto transparente en Firefox (como filter chroma)

Mostrar el html generado de una funcion, como????