<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Entre Códigos &#187; JavaScript</title>
	<atom:link href="http://www.entrecodigos.com/temas/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.entrecodigos.com</link>
	<description>Reflexiones de un cerebro en fuga y artículos sobre posicionamiento, e-marketing, usabilidad y otros tecnicismos.</description>
	<lastBuildDate>Wed, 25 Jan 2012 07:45:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Peticiones asíncronas desde JavaScript: AJAX a pelo</title>
		<link>http://www.entrecodigos.com/2008/12/peticiones-asincronas-desde-javascript-ajax-a-pelo.html</link>
		<comments>http://www.entrecodigos.com/2008/12/peticiones-asincronas-desde-javascript-ajax-a-pelo.html#comments</comments>
		<pubDate>Wed, 10 Dec 2008 07:10:55 +0000</pubDate>
		<dc:creator>Ruben Cantón</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[taller]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://www.entrecodigos.com/?p=596</guid>
		<description><![CDATA[Hace unos días estuve haciendo un módulo que debía realizar peticiones asíncronas a un webservice desde javascript, o dicho de otra forma, el famoso AJAX pero manual, sin usar ninguna librería. Para quien no sepa en qué consiste AJAX, es lo que permite realizar peticiones al servidor sin tener que cargar toda la página; seguro [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días estuve haciendo un módulo que debía realizar <strong>peticiones asíncronas a un webservice desde javascript</strong>, o dicho de otra forma, el famoso AJAX pero manual, sin usar ninguna librería. Para quien no sepa en qué consiste AJAX, es lo que permite realizar peticiones al servidor <strong>sin tener que cargar toda la página</strong>; seguro que lo habéis visto en muchos sitios, por ejemplo, al enviar un comentario y ver cómo el mismo se publica sin hacer una recarga completa de la página.</p>
<p>Pues bien, para lograr hacer esto necesitamos utilizar el objeto XMLHttpRequest de nuestro explorador, accederemos a él a través de JavaScript y le enviaremos una petición al servidor. <strong>El servidor nos responderá enviándonos los datos en un archivo XML</strong>, lo recogemos, lo leemos, y lo mostramos en pantalla haciendo uso de javascript.</p>
<p><span id="more-596"></span><br />
<h3>Creando el objeto XMLHttpRequest</h3>
<p>Vamos por faena, lo primero de todo es&#8230; <strong>¿Cómo creamos un objeto XMLHttpRequest?</strong> Os muestro el código necesario, en que, como todavía no hay un estándard sobre ese objeto (aunque hay un borrador final de la W3C a 15 de Abril de 2008) es necesario meter varias bifurcaciones para crearlo dependiendo del explorador:</p>
<pre>function <strong>createXmlHttpRequestObject()</strong> {
    var req = false;

    if(window.XMLHttpRequest &amp;&amp; !(window.ActiveXObject)) {
        try {req = new XMLHttpRequest();}
        catch(e) {req = false;}
        }
    else if(window.ActiveXObject) {
       	try {req = new ActiveXObject("Msxml2.XMLHTTP");}
      	catch(e) {
      	    try {req = new ActiveXObject("Microsoft.XMLHTTP");}
        	catch(e) {req = false;}
	    }
        }
	return req;
}</pre>
<p>El objeto es el que nos permite hacer peticiones, lo guardaremos en una variable en cada petición de la siguiente manera:</p>
<pre>var request;
request = apicl_createXmlHttpRequestObject();</pre>
<h3>Realizando la petición</h3>
<p>Una vez que sabemos cómo crear el objeto XMLHttpRequest, es hora de <strong>realizar una llamada al servidor</strong>, hay que tener en cuenta que en cada llamada al servidor hay que crear un objeto XMLHttpRequest nuevo.</p>
<pre>var request;  //Esta variable ha de ser global.

function callWS(url, responseHandler, parameters) {
    var strParameters = "";
    request.onreadystatechange = responseHandler;
    request.open("POST", url, true);

    if(parameters != null &amp;&amp; parameters.length != 0) {
        request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

        for(var i = 0; i &lt; parameters.length; i++) {
            var p = parameters[i];
            if(strParameters != "") strParameters += "&amp;";
            strParameters += p[0] + "=" + p[1];
        }
    }
   request.send(strParameters);
}

//Petición sin parámetros:
function getDatos() {
    if (document.getElementById('divDatos').innerHTML==''){
        request = createXmlHttpRequestObject();
        callWS("http://www.entrecodigos.com/service.asmx/getDatos", getResponseDatos, null);
        }
}</pre>
<p>Voy a intentar explicar los puntos menos claros:</p>
<ul>
<li>La propiedad <strong>onreadystatechange</strong> permite establecer una función de destino cada vez que nuestro objeto XMLHttpRequest cambie de estado, esa función se encargará de recoger la respuesta.</li>
<li>El método <strong>open</strong>, permite asignar ciertos valores a nuestra petición: el <em>method </em>(GET, POST o PUT), la url, si va a ser una petición asíncrona, usuario y contraseña. Los 3 últimos son opcionales.</li>
<li>La petición puede hacerse con <strong>parámetros</strong> que requiera la función a la que llamas en el servidor, en ese caso los metemos en una cadena. Luego veremos cómo meter parámetros.</li>
<li>Realizamos la petición con el método <strong>send</strong>. Para realizar esta petición se supone que tenemos un webservice al otro lado, es una url a un archivo, el servidor recogerá la petición y la tratará, puedes tener un webservice o hacer una página en aspx manual que reciba las peticiones y devuelva los XML, es preferible lo primero.</li>
</ul>
<h3>Recogiendo la respuesta del servidor</h3>
<p>Ahora que ya sabemos cómo llamar al servidor, debemos <strong>recoger la respuesta</strong> y tratarla, en mi caso lo simplifico haciendo que lo que me pasa el servidor sea una simple cadena de texto que muestro en un div. Como Firefox me dio problemas porque metía las respuestas de strings muy largas en varios nodos tuve que crear un bucle:</p>
<pre>
function getResponse(){
    var res = '';
    for (var i=0; (i &lt; request.responseXML.documentElement.childNodes.length); i++) {
        if (request.responseXML.documentElement.childNodes.item(i))
            {res = res + request.responseXML.documentElement.childNodes.item(i).nodeValue;}
        }
    res = res.replace(/&lt;/g, "&lt;").replace(/&gt;/g, "&gt;");
    return res;
}

function getResponseDatos() {
    if(request.readyState == 4 &amp;&amp; request.status == 200) {
        document.getElementById('divDatos').innerHTML=getResponse();
    }
}
</pre>
<p>Como se puede ver, conforme el objeto cambie de estado (0: Inicializado, 1: Petición abierta, 2: Petición enviada, 3: Recibiendo respuesta, 4: Respuesta recibida) se irán haciendo llamadas a la función que pusimos receptora, por eso, debemos colocar un filtro que mire en que estado nos encontramos cuando recibimos la llamada. Cuando por fin el estado sea 4, miramos si la respuesta es satisfactoria (200) o si por el contrario ha habido algún tipo de problema (401, 404, &#8230;).</p>
<h3>Peticiones con parámetros</h3>
<p>Por último, os pongo el código completo e incluyo de propina una llamada con parámetros de ejemplo, creo que tras todo lo anterior no necesita explicación.</p>
<pre style="height: 200px;">//Peticiones Asíncronas:
var request;  //Esta variable ha de ser global.

function <strong>createXmlHttpRequestObject()</strong> {
    var req = false;

    if(window.XMLHttpRequest &amp;&amp; !(window.ActiveXObject)) {
        try {req = new XMLHttpRequest();}
        catch(e) {req = false;}
        }
    else if(window.ActiveXObject) {
       	try {req = new ActiveXObject("Msxml2.XMLHTTP");}
      	catch(e) {
      	    try {req = new ActiveXObject("Microsoft.XMLHTTP");}
        	catch(e) {req = false;}
	    }
        }
	return req;
}

function callWS(url, responseHandler, parameters) {
    var strParameters = "";
    request.onreadystatechange = responseHandler;
    request.open("POST", url, true);

    if(parameters != null &amp;&amp; parameters.length != 0) {
        request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

        for(var i = 0; i &lt; parameters.length; i++) {
            var p = parameters[i];
            if(strParameters != "") strParameters += "&amp;";
            strParameters += p[0] + "=" + p[1];
        }
    }
   request.send(strParameters);
}

function getResponse(){
    var res = '';
    for (var i=0; (i &lt; request.responseXML.documentElement.childNodes.length); i++) {
        if (request.responseXML.documentElement.childNodes.item(i))
            {res = res + request.responseXML.documentElement.childNodes.item(i).nodeValue;}
        }
    res = res.replace(/&lt;/g, "&lt;").replace(/&gt;/g, "&gt;");
    return res;
}

//Petición sin parámetros:
function getDatos() {
    if (document.getElementById('divDatos').innerHTML==''){
        request = createXmlHttpRequestObject();
        callWS("http://www.entrecodigos.com/service.asmx/getDatos", getResponseDatos, null);
        }
}
function getResponseDatos() {
    if(request.readyState == 4 &amp;&amp; request.status == 200) {
        document.getElementById('divDatos').innerHTML=getResponse();
    }
}

//Petición con parámetros:
function getDatosConParam(){
    var tipo = document.getElementById('divEjemplo');
    if (tipo){
        var parameters = new Array();
        parameters[0] = new Array("nombreParam1", ejemplo.options[ejemplo.selectedIndex].value);
        parameters[1] = new Array("nombreParam2", "valor del param 2");
        request = createXmlHttpRequestObject();
        callWS("http://www.entrecodigos.com/service.asmx/getDatos", getResponseDatosConParam, parameters);
        }
}
function getResponseDatosConParam() {
    if(request.readyState == 4 &amp;&amp; request.status == 200) {
        document.getElementById('divEjemplo').innerHTML=getResponse();
    }
}
</pre>
<h3>Notas finales</h3>
<p>Para que no os pase como a mi, os aviso de que el javascript <strong>sólo podrá hacer peticiones al mismo dominio que ha servido la página</strong> por cuestiones de seguridad (phishing y otras historias), esto es, si intentamos llamar a un webservice alojado en www.otraweb.com desde www.miweb.com nos lanzará un error de permisos y nos impedirá el acceso. Para hacer algo como eso debe utilizarse un iframe que cargue una página en www.otraweb.com y lance las peticiones al webservice.</p>
<p>El código que véis lo he picado a mano y nunca lo he probado, es posible que tenga fallos <img src='http://www.entrecodigos.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.entrecodigos.com/2008/12/peticiones-asincronas-desde-javascript-ajax-a-pelo.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lanzar un pop-up en JavaScript correctamente</title>
		<link>http://www.entrecodigos.com/2008/11/lanzar-popup-javascript-correctamente.html</link>
		<comments>http://www.entrecodigos.com/2008/11/lanzar-popup-javascript-correctamente.html#comments</comments>
		<pubDate>Thu, 13 Nov 2008 09:43:51 +0000</pubDate>
		<dc:creator>Ruben Cantón</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[taller]]></category>
		<category><![CDATA[usabilidad]]></category>
		<category><![CDATA[estándares]]></category>

		<guid isPermaLink="false">http://www.entrecodigos.com/?p=617</guid>
		<description><![CDATA[En algunos casos puede resultarnos útil e incluso más cómodo para el usuario abrir una página en un pop-up en el que mostrar una información. Si buscamos en google cómo hacerlo o leemos cualquier manual de javascript el código que nos muestra para hacer esto es el siguiente:
window.open('url to open','window name','attribute1,attribute2') 
En realidad, ese código [...]]]></description>
			<content:encoded><![CDATA[<p>En algunos casos puede resultarnos útil e incluso más cómodo para el usuario abrir una página en un pop-up en el que mostrar una información. Si buscamos en google cómo hacerlo o leemos cualquier manual de javascript el código que nos muestra para hacer esto es el siguiente:</p>
<pre>window.open('url to open','window name','attribute1,attribute2') </pre>
<p>En realidad, ese código tiene fallos, a saber:</p>
<ul>
<li>Los navegadores sin JavaScript no podrán abrir la página.</li>
<li>No se indexará igual de bien en los buscadores, y algunos <a href="http://www.entrecodigos.com/2008/04/diccionario-seo.html">crawlers</a>, no lo sabrán recorrer.</li>
<li>Al pasar el ratón sobre el link, no podremos ver la página destino en la barra de estado.</li>
<li>El usuario pierde la opción de hacer click derecho para abrir en una nueva ventana, pestaña o copiar la ruta del enlace.</li>
<li>El usuario pierde la opción de agregar la página a favoritos en el menú emergente del enlace.</li>
<li>Por último, las etiquetas &#8220;a&#8221; tienen una razón de ser especificada en el W3: &#8220;<em>A link is a connection from one Web resource to another</em>&#8220;, por lo que utilizarlo para que nuestro texto tenga una apariencia pero funcione a través del onclick no es la mejor forma de seguir el estándar.</li>
</ul>
<p><strong>La forma correcta de abrir un pop-up es la siguiente:</strong></p>
<pre>&lt;a href="./index.html" target="_blank" onClick="window.open(this.href,
this.target, 'width=300, height=400'); return false;">Abrir pop-up.&lt;/a></pre>
<p>De esta manera, el enlace es un <strong>enlace</strong> normal que <strong>enlazará</strong> de forma correcta bajo cualquier circunstancia y, además, en las condiciones mas habituales funcionará de la forma en que queremos nosotros: abriendo un pop-up.</p>
<p>Fuente: <a href="http://www.nosolousabilidad.com/articulos/popups_javascript.htm">No sólo usabilidad</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.entrecodigos.com/2008/11/lanzar-popup-javascript-correctamente.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>3 en raya en JavaScript</title>
		<link>http://www.entrecodigos.com/2008/02/3-en-raya-en-javascript.html</link>
		<comments>http://www.entrecodigos.com/2008/02/3-en-raya-en-javascript.html#comments</comments>
		<pubDate>Sun, 17 Feb 2008 14:14:19 +0000</pubDate>
		<dc:creator>Ruben Cantón</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[taller]]></category>
		<category><![CDATA[tecnologia]]></category>

		<guid isPermaLink="false">http://www.entrecodigos.com/2008/02/3-en-raya-en-javascript.html</guid>
		<description><![CDATA[Hace años se puso de moda crear frikadas en Javascript, eran los tiempos previos al Flash o al AJAX y podías llegar a ver obras de arte tales como un tetris o un arcanoid ejecutándose en tu explorador y programado en javascript, desgraciadamente, aunque poseo esos scripts se han quedado algo obsoletos y no funcionan [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Hace años se puso de moda crear frikadas en Javascript</strong>, eran los tiempos previos al Flash o al AJAX y podías llegar a ver obras de arte tales como un tetris o un arcanoid ejecutándose en tu explorador y programado en javascript, desgraciadamente, aunque poseo esos scripts se han quedado algo obsoletos y no funcionan muy bien en firefox (miraré de arreglarlos un día de estos quizás).</p>
<p>Mientras tanto os dejo con el <strong>3 en raya</strong>, que se puede jugar con alguien o contra la máquina:</p>
<style type="text/css">
 <!--
   .blokje{height:48px;width:48px;font-size:16pt;font-weight:900;font-family:'Comic Sans MS';Text-Align:Center;}
   .knopje{width:144px;}
 -->
 </style>
<form>
<div style="width:200px;float:left;text-align:center;">
<script type="text/javascript" src="http://www.entrecodigos.com/javascripts/3enraya.js"></script></p>
<input Type="Button" Title="Haz click aquí para jugar otra vez." Name="beurten" Width="164px" Class="knopje" Value="Jugador 1" onClick="wie = 'Jugador 1'; initieer()">
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 style="margin:auto;">
<caption><script language="JavaScript" type="text/javascript">dibujarTabla();</script></caption>
<tr>
<td></td>
</tr>
</table>
</div>
<div style="width:250px;float:left;text-align:center;">
<input type="checkbox" title="Haz click aquí para jugar con otra persona o contra la máquina." Name="automaat" Value="2 jugadores" Id="autmat" onClick="if (this.value == 'Ordenador') {this.value = '2 jugadores'; auto = 0} else {this.value = 'Ordenador'; auto = 1}; wie = 'Jugador 1'; initieer();"><label For="autmat">Contra la máquina</label></p>
<table border=0 cellspacing=0 cellpadding=4 style="margin:auto;">
<tr style="background-color:#666666;color:#ffffff;">
<td style="text-align:center;width:65px;">Jugador 1</td>
<td style="text-align:center;width:65px;">Jugador 2</td>
<td style="text-align:center;width:65px;">Empates</td>
</tr>
<tr bgcolor="#C0C0C0">
<td ALIGN=CENTER>
<input style="background-color:transparent;border:solid 0px;text-align:center" Type="Text" Size="3" ReadOnly Title="Jugador 1" Name="speler1" Value="0"></td>
<td ALIGN=CENTER>
<input Style="BackGround-Color:Transparent;Border:Solid 0px;Text-Align:Center" Type="Text" Size="3" ReadOnly Title="Jugador 2" Name="speler2" Value="0"></td>
<td ALIGN=CENTER>
<input Style="BackGround-Color:Transparent;Border:Solid 0px;Text-Align:Center" Type="Text" Size="3" ReadOnly Title="Remise" Name="remise" Value="0"></td>
</tr>
</table>
</div>
</form>
<div style="clear:both;"></div>
<p><span id="more-135"></span>Para ganar al 3 en raya basta con <strong>empezar desde una esquina</strong> y abrirte 2 caminos posibles colocándote en las otras esquinas, cuando tienes 3 esquinas de 4 ya tienes la victoria, por el centro o por la banda, no puede cubrirte ambas partes.</p>
<p>Tengo muchos otros juegos por ahí, incluso alguno rollo plataformas o el antiquísimo <strong>Donkey Kong, arcanoid o tetris</strong>, también hay juegos de rol en formato texto o texto en movimiento que persigue tu ratón.</p>
<p>PD: El algoritmo <strong>tiene algún bug</strong>, pero dado que es del año catapum (cuando mas de media España aún no sabía de la existencia de Internet) y que no tengo ganas de arreglarlo espero que se me perdone <img src='http://www.entrecodigos.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.entrecodigos.com/2008/02/3-en-raya-en-javascript.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Cambiar estilo con Javascript</title>
		<link>http://www.entrecodigos.com/2008/01/cambiar-estilo-con-javascript.html</link>
		<comments>http://www.entrecodigos.com/2008/01/cambiar-estilo-con-javascript.html#comments</comments>
		<pubDate>Wed, 30 Jan 2008 13:11:28 +0000</pubDate>
		<dc:creator>Ruben Cantón</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[taller]]></category>

		<guid isPermaLink="false">http://www.entrecodigos.com/2008/01/cambiar-estilo-con-javascript.html</guid>
		<description><![CDATA[Click aquí
Si eres diseñador y tu paciencia con los diferentes exploradores y sus distintas formas de interpretar el CSS ha llegado a su límite, tengo algo que mostrarte, y es que, ¿que me dirías si te digo que existe una forma de colocar una página de estilos distinta para cada explorador?
Pues existe, se puede hacer [...]]]></description>
			<content:encoded><![CDATA[<div id="divcillo" style="background-color:#ffffff;font-size:18px;text-align:center;text-width:bold;width:200px;height:150px;border:3px solid #0000ff;float:left;margin:15px 5px 5px 2px;cursor:pointer;" onClick="if(this.style.border=='3px solid rgb(0, 0, 255)' || this.style.border=='#0000ff 3px solid'){this.style.border='#ff0000 3px solid';}else{this.style.border='#0000ff 3px solid';}"><br/><br/><br/>Click aquí</div>
<p>Si eres diseñador y tu paciencia con los diferentes exploradores y sus distintas formas de interpretar el CSS ha llegado a su límite, tengo algo que mostrarte, y es que, ¿que me dirías si te digo que <strong>existe una forma de colocar una página de estilos distinta para cada explorador</strong>?</p>
<p>Pues existe, se puede hacer usando una sentencia muy sencilla en JavaScript o desde tu código fuente en el servidor. <strong>Os muestro cómo:</strong></p>
<p><span id="more-118"></span><br />
<h2>Desde JavaScript, ideal en páginas estáticas</h2>
<p>Para hacerlo desde JavaScript aprovecharemos la capacidad del mismo para recorrer los objetos de la página, y a través de la cual puedes cambiar sus distintos valores, de forma que, si en la etiqueta de inclusión de la hoja de estilos establecemos un ID, <strong>podemos cambiar la ruta al mismo en función del explorador que el usuario esté utilizando</strong>:</p>
<pre>&lt;link rel="stylesheet" type="text/css" href="hoja.css" id="css"&gt;<br/><br/>&lt;script type="text/javascript" language="JavaScript"&gt;
if (navigator.appName.indexOf("Microsoft Internet Explorer") !=-1) {
&#09;document.getElementById("css").href= "cssIE.css";<br/>} else {<br/>&#09;document.getElementById("css").href= "cssFire.css";
}<br/>&lt;/script&gt;</pre>
<p>Por supuesto, hay que hacer una llamada a la función en el onLoad del body, y puedes meter mas condicionales para mas tipos de explorador, utiliza la instrucción <em>alert(navigator.appName);</em> para saber el appName de cada uno de ellos. No olvides que es recomendable meter las funciones JavaScript en archivos externos y realizar una llamada, muy útil sobretodo si, como en este caso, pretendes reutilizarla en muchas páginas del site.</p>
<h2>Al generar la página en el servidor</h2>
<p>Pero si utilizar JavaScript no te convence o te parece arriesgado (el usuario podría tenerlo desactivado) siempre te queda la opción de <strong>realizar esta operación en el servidor</strong>, utilizando el lenguaje de servidor que tengas para generar tus páginas dinamicamente. Por ejemplo, en ASP.Net utilizaríamos lo siguiente:</p>
<pre>Page_Load (...)<br/>If Request.UserAgent.StartsWith("Mozilla") Then<br/>&#09;Me.EtiquetaCSS.Attributes("href") = "estilosMZ.css"<br/>Elseif Request.UserAgent.Contains("Internet Explorer") Then<br/>&#09;Me.EtiquetaCSS.Attributes("href") = "estilosIE.css"<br/>End If<br/><br/>//Para que funcione, habremos colocado la id "EtiquetaCSS" y la <br/>// propiedad runat="server" en la etiqueta de inclusión del CSS:<br/>&lt;link rel="stylesheet" type="text/css" href="estilos.css" media="screen" runat="server" id="EtiquetaCSS"/></pre>
<p>El resto de lenguajes también incorporan formas de hacer esto mismo, pero tendrás que buscar en Google o entre sus librerías ya que de memoria no puedo decirte cómo.</p>
<h2>Otras opciones</h2>
<p>Si lo que quieres no es cambiar toda la página de estilos, sino tan sólo <strong>el estilo de un objeto o una propiedad</strong>, puedes hacerlo a través de JavaScript con un par de instrucciones sencillas. Accediendo al style del objeto y luego a la propiedad que deseas cambiar (como en el ejemplo de arriba) o cambiando el estilo al que tiene acceso:</p>
<pre>function CambiarEstilo(){<br/>&nbsp;&nbsp;//Para cambiar todo el estilo del objeto:<br/>&nbsp;&nbsp;document.getElementById('elemento').className='nuevoEstilo';<br/><br/>&nbsp;&nbsp;//Si en cambio sólo queremos cambiar una propiedad:<br/>&nbsp;&nbsp;document.getElementById('Elemento').style.<span style="color:pink;">propiedad</span>='nuevoValor';<br/><br/>&nbsp;&nbsp;<span style="color:pink;"><strong>Propiedad</strong></span>: cualquiera de las de css (color,background,border,margin,padding,...)<br/>}</pre>
<p>Bueno, pues eso es todo, pronto entenderéis que esto es mas útil de lo que parece, y acabaréis utilizándolo&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.entrecodigos.com/2008/01/cambiar-estilo-con-javascript.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

