<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>CODARE &#187; Masaru Hoshi</title>
	<atom:link href="http://codare.net/author/mhoshi/feed/" rel="self" type="application/rss+xml" />
	<link>http://codare.net</link>
	<description>Programadores, uni-vos!</description>
	<lastBuildDate>Tue, 29 Sep 2009 12:00:01 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='codare.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/d9589f1266f7b80a398397e3165f7c56?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>CODARE &#187; Masaru Hoshi</title>
		<link>http://codare.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://codare.net/osd.xml" title="CODARE" />
	<atom:link rel='hub' href='http://codare.net/?pushpress=hub'/>
		<item>
		<title>Javascript: Carregar estilos dinamicamente (CSS)</title>
		<link>http://codare.net/2008/05/10/javascript-carregar-estilos-dinamicamente-css/</link>
		<comments>http://codare.net/2008/05/10/javascript-carregar-estilos-dinamicamente-css/#comments</comments>
		<pubDate>Sat, 10 May 2008 08:29:10 +0000</pubDate>
		<dc:creator>Masaru Hoshi</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[estilos]]></category>
		<category><![CDATA[incluindo dinamicamente]]></category>
		<category><![CDATA[stylesheet]]></category>

		<guid isPermaLink="false">http://codare.wordpress.com/?p=184</guid>
		<description><![CDATA[A dica é realmente interessante e já me ajudou em outros momentos. Existem momentos que vocês simplesmente deseja fazer aquela &#8220;alteração de estilo&#8221; no site sem ter que fazer aquele famigerado reload da página. Então, como fazer isso sem usar AJAX?
Pode parecer simples&#8230; e é! Basicamente basta chamar a função loadCSS descrita abaixo. A função [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=184&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>A dica é realmente interessante e já me ajudou em outros momentos. Existem momentos que vocês simplesmente deseja fazer aquela &#8220;alteração de estilo&#8221; no site sem ter que fazer aquele famigerado reload da página. Então, como fazer isso sem usar AJAX?</p>
<p>Pode parecer simples&#8230; e é! Basicamente basta chamar a função loadCSS descrita abaixo. A função se baseia apenas no bom e velho DOM e nada mais.</p>
<pre>function loadCSS(url) {
    var lnk = document.createElement('link');
    lnk.setAttribute('type', "text/css" );
    lnk.setAttribute('rel', "stylesheet" );
    lnk.setAttribute('href', url );
    document.getElementsByTagName("head").item(0).appendChild(lnk);
}</pre>
<p><strong>NOTA:</strong> Só testei no IE 7 e no Firefox 2. Se alguém fizer testes em outros browsers e também funcionar avise e comente.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/184/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/184/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=184&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2008/05/10/javascript-carregar-estilos-dinamicamente-css/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8e87db536597b01a4a3c95def4ad1c8f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hoshi</media:title>
		</media:content>
	</item>
		<item>
		<title>Javascript: Executando scripts após o carregamento da página</title>
		<link>http://codare.net/2007/09/15/javascript-executando-scripts-apos-o-carregamento-da-pagina/</link>
		<comments>http://codare.net/2007/09/15/javascript-executando-scripts-apos-o-carregamento-da-pagina/#comments</comments>
		<pubDate>Sat, 15 Sep 2007 12:50:33 +0000</pubDate>
		<dc:creator>Masaru Hoshi</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://codare.net/2007/09/15/executando-scripts-apos-o-carregamento-da-pagina/</guid>
		<description><![CDATA[Palavras-chave: DEFER, onLoad, body, carregamento
O problema é clássico. Você tem uma função/método e deseja que ele seja chamado apenas após o carregamento da página pois esse script interage com algum elemento da página que precisa estar completamente renderizado para poder ser manipulado. Vejamos o exemplo a seguir que muda um objeto do tipo input text [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=170&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: DEFER, onLoad, body, carregamento</p>
<p>O problema é clássico. Você tem uma função/método e deseja que ele seja chamado apenas após o carregamento da página pois esse script interage com algum elemento da página que precisa estar completamente renderizado para poder ser manipulado. Vejamos o exemplo a seguir que muda um objeto do tipo input text para apenas leitura:</p>
<pre>&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript"&gt;
function setDisabled() {
  document.getElementById("foo").disabled = true;
}
// Chamada da função
setDisabled();
&lt;/script&gt;
&lt;/head&gt;
  &lt;body&gt;
    &lt;form method="post"&gt;
      &lt;input type="text" name="foo" id="foo" size="20"&gt;
      &lt;input type="submit"&gt;
    &lt;/form&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre>
<p>Inicialmente esse exemplo deveria ser o suficiente para funcionar. Contudo, não podemos considerar que toda a página será carregada de uma única vez. Caso isso aconteça, quando a função for chamada campo o input pode não ter sido carregado. Resultado: você terá um erro de script.</p>
<p>Existem várias saídas para esse tipo de situação. A mais conhecida é incluir a chamada da função pelo método onLoad da tag body ao invés de executá-lo dentro do bloco &lt;script&gt;:</p>
<pre>&lt;body onLoad="setDisabled()"&gt;</pre>
<p>Mas pode não ser suficiente caso você tenha muitos mais funções a serem chamadas. Outra saída seria incluir o bloco <code>&lt;script&gt;</code> no final do código, mas isso foge um pouco do padrão do W3C de incluir todos os <code>&lt;scripts&gt;</code> entre as tags <code>&lt;head&gt;</code>. A saída para esse problema é a utilização de um atributo pouco conhecido da tag <code>&lt;script&gt;</code>, o <strong><code>DEFER</code></strong>.</p>
<p>O <strong><code>DEFER</code></strong> indica que o bloco script só será carregado após todo o carregamento da página. Dessa forma, para que o primeiro exemplo apresentado funcione bastaria alterá-lo para incluir o atributo:</p>
<pre>&lt;script type="text/javascript" <strong>DEFER="DEFER"</strong>&gt;
function setDisabled() {
  document.getElementById("foo").disabled = true;
}

// Chamada da função
setDisabled();
&lt;/script&gt;</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/170/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/170/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=170&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/09/15/javascript-executando-scripts-apos-o-carregamento-da-pagina/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8e87db536597b01a4a3c95def4ad1c8f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hoshi</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby: Objetos com id negativo (object_id)</title>
		<link>http://codare.net/2007/01/06/ruby-objetos-com-id-negativo-object_id/</link>
		<comments>http://codare.net/2007/01/06/ruby-objetos-com-id-negativo-object_id/#comments</comments>
		<pubDate>Sat, 06 Jan 2007 11:53:32 +0000</pubDate>
		<dc:creator>Masaru Hoshi</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://codare.net/2007/01/06/objetos-com-id-negativo-object_id/</guid>
		<description><![CDATA[Palavras-chave: object_id, negativo, __id__
Em Ruby, bem como em outras linguagens que trabalham orientadas a objetos, existe o conceito do ObjectID (ou id de objeto), que nada mais é do que uma identificação única para um objeto instanciado dentro de uma aplicação.
Para ter acesso ao ObjectID em Ruby basta utilizar o método object_id ou __id__. De [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=64&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: object_id, negativo, __id__</p>
<p>Em Ruby, bem como em outras linguagens que trabalham orientadas a objetos, existe o conceito do ObjectID (ou id de objeto), que nada mais é do que uma identificação única para um objeto instanciado dentro de uma aplicação.</p>
<p>Para ter acesso ao ObjectID em Ruby basta utilizar o método <code>object_id</code> ou <code>__id__</code>. De acordo com a própria documentação da linguagem, o método retorna &#8220;um identificador inteiro do objeto. Esse número será retornado em todas as chamadas ao objeto e dois objetos ativos nunca compartilharão o mesmo id.&#8221;</p>
<p>Nada demais. Contudo, existe uma peculiaridade nessa definição que às vezes é passada despercebida:</p>
<pre>
$ ruby -e "class Foo; end; f = Foo.new; p f; puts f.object_id;"
#&lt;Foo:0xb7d921c8&gt;
-605253404
</pre>
<p>O trecho de código acima  cria uma instância da class Foo e imprime o endereçamento da memória onde o objeto foi alocado, juntamento com seu respectivo ObjectID. Observou o número negativo? Ele é a representação inteira da posição da memória do objeto. (0xb7d921c8 &lt;-&gt; -605253404).</p>
<p>Assim, o ObjectID em Ruby é sempre um número inteiro, <strong>positivo</strong> ou <strong>negativo</strong>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/64/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/64/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=64&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/01/06/ruby-objetos-com-id-negativo-object_id/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8e87db536597b01a4a3c95def4ad1c8f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hoshi</media:title>
		</media:content>
	</item>
		<item>
		<title>Javascript: Construindo listas dinamicamente</title>
		<link>http://codare.net/2006/12/20/javascript-construindo-listas-dinamicamente/</link>
		<comments>http://codare.net/2006/12/20/javascript-construindo-listas-dinamicamente/#comments</comments>
		<pubDate>Wed, 20 Dec 2006 12:57:52 +0000</pubDate>
		<dc:creator>Masaru Hoshi</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://codare.net/2006/12/20/construindo-listas-dinamicamente/</guid>
		<description><![CDATA[Palavras-chave: DOM, childnode, removechild, excluir itens
Quando começamos a trabalhar com telas javascript, especialmente quando o assunto tem a ver com Ajax e coisas parecidas, é praticamente inevitável o desejo de tornar aquelas páginas HTML estáticas em algo mais interativo, tal como uma aplicação Desktop, sem aquele eventual &#8220;reload&#8221;. Nesses casos nada melhor que a combinação [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=92&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: DOM, childnode, removechild, excluir itens</p>
<p>Quando começamos a trabalhar com telas javascript, especialmente quando o assunto tem a ver com Ajax e coisas parecidas, é praticamente inevitável o desejo de tornar aquelas páginas HTML estáticas em algo mais interativo, tal como uma aplicação Desktop, sem aquele eventual &#8220;reload&#8221;. Nesses casos nada melhor que a combinação DOM + Javascript.</p>
<p>Uma caso bem típico de páginas dinâmicas é atualizar uma coleção qualquer, removendo os itens existentes e incluindo novos.</p>
<pre>
...

&lt;ul id="Foo"&gt;
  &lt;li&gt;um&lt;/li&gt;
  &lt;li&gt;dois&lt;/li&gt;
  &lt;li&gt;tres&lt;/li&gt;
  &lt;li&gt;quatro&lt;/li&gt;
  &lt;li&gt;cinco&lt;/li&gt;
&lt;/ul&gt;

&lt;button onclick="recarrega()"&gt;recarrega&lt;/button&gt;

...
</pre>
<p>O trecho acima é uma lista de itens de variando de &#8220;um&#8221; até &#8220;cinco&#8221;. Neste exemplo fazemos uso de uma lista comum (tag UL), mas poderíamos fazer o mesmo com qualquer outro tipo de elemento DOM.</p>
<p>Ao final existe um botão que chama uma função javascript chamada <code>recarrega()</code>. Vamos dar uma olhada nela:</p>
<pre>
function recarrega() {
  var p = document.getElementById('Foo');
  var filhos = p.childNodes;
  for( i = filhos.length - 1; i &gt;= 0; i-- ) {
    if( filhos[i].tagName == 'LI' ) {
      p.removeChild( filhos[i] );
    }
  }

  var li = document.createElement('li');
  li.innerHTML = 'seis';
  p.appendChild(li);

  var li = document.createElement('li');
  li.innerHTML = 'sete';
  p.appendChild(li);
}
</pre>
<p>A função não tem segredo algum. Após recuperar o elemento &#8220;pai&#8221; da lista (identificado como Foo), buscamos todos os nós abaixo dele, que no nosso caso são os itens da lista (LI), através do atributo <code>childNodes</code>. Esse atributo é uma lista comum e pode ser acessada como se fosse um array.</p>
<p>Dentro do <code>for</code> tomamos cuidado de excluir apenas os elementos de <code>tagName</code> LI. Observe que os itens são recuperados do último para o primeiro. Naturalmente é neste ponto que geralmente as pessoas se perdem.</p>
<p>Se ao invés de iterar sobre a lista na ordem inversa tivéssemos ido em ordem crescente, ao excluir um elemento em uma dada posição, o elemento seguinte assumiria essa posição. No loop seguinte o contador <code>i</code> teria sido incrementado e buscaria o elemento nessa posição, que agora ocupa a posição do item excluído anteriormente.</p>
<p>Quando isso ocorre ou o script pula um elemento a ser excluído ou tenta excluir um item que não existe na lista gerando uma exceção.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/92/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/92/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=92&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2006/12/20/javascript-construindo-listas-dinamicamente/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8e87db536597b01a4a3c95def4ad1c8f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hoshi</media:title>
		</media:content>
	</item>
		<item>
		<title>Javascript: Descobrindo o emissor de um evento</title>
		<link>http://codare.net/2006/09/23/javascript-descobrindo-o-emissor-de-um-evento/</link>
		<comments>http://codare.net/2006/09/23/javascript-descobrindo-o-emissor-de-um-evento/#comments</comments>
		<pubDate>Sat, 23 Sep 2006 15:51:21 +0000</pubDate>
		<dc:creator>Masaru Hoshi</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://codare.wordpress.com/2006/09/23/descobrindo-o-emissor-de-um-evento/</guid>
		<description><![CDATA[Palavras-chave: DOM, eventos, target
Existem diversas maneiras de registrar um evento. Na forma tradicional, a função deve ter como único parâmetro uma referência ao evento que a invocou. Então, se a função não recebe nada além desse parâmetro, como descobrir quem emitiu o evento?
Imagine que você possua três DIVs e deseje fazer alguma coisa com eles. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=43&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: DOM, eventos, target</p>
<p>Existem diversas maneiras de registrar um evento. Na forma tradicional, a função deve ter como único parâmetro uma referência ao evento que a invocou. Então, se a função não recebe nada além desse parâmetro, como descobrir quem emitiu o evento?</p>
<p>Imagine que você possua três DIVs e deseje fazer alguma coisa com eles. Vamos associar o evento <code>onClick</code> a uma função chamada <code>mudacor</code>.</p>
<pre>...
&lt;div id="um"&gt;UM&lt;/div&gt;
&lt;div id="dois"&gt;DOIS&lt;/div&gt;
&lt;div id="tres"&gt;TRES&lt;/div&gt;

&lt;script type="text/javascript"&gt;
document.getElementById('um').onclick = mudacor;
document.getElementById('dois').onclick = mudacor;
document.getElementById('tres').onclick = mudacor;
&lt;/script&gt;
...</pre>
<p>O padrão W3C define que eventos possuem o atributo <code>target</code>, responsável por indicar a origem do evento. Contudo, o Internet Explorer ignora esse padrão e diz que deve ser usado <code>srcElement</code>. De qualquer maneira, o comportamento é o mesmo. Vejamos como implementar essa função.</p>
<p>O Internet Explorer ignora o parâmetro passado à função. Segundo ele, os eventos pertencem ao objeto <code>window</code>. Assim, antes de recuperar o atributo <code>target</code> (ou <code>srcElement</code>) é preciso verificar se o evento realmente existe.</p>
<pre>function mudacor(e) {
    var emissor;
    if(!e) var e = window.event;
    if (e.target) emissor = e.target;
    else if (e.srcElement) emissor = e.srcElement;

    emissor.style.backgroundColor = '#00FF00';
}</pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/43/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/43/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=43&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2006/09/23/javascript-descobrindo-o-emissor-de-um-evento/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8e87db536597b01a4a3c95def4ad1c8f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hoshi</media:title>
		</media:content>
	</item>
		<item>
		<title>Javascript: Arrays com valores vazios (undefined)</title>
		<link>http://codare.net/2006/09/21/javascript-arrays-com-valores-vazios-undefined/</link>
		<comments>http://codare.net/2006/09/21/javascript-arrays-com-valores-vazios-undefined/#comments</comments>
		<pubDate>Thu, 21 Sep 2006 14:35:14 +0000</pubDate>
		<dc:creator>Masaru Hoshi</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://codare.wordpress.com/2006/09/21/arrays-com-undefined-values/</guid>
		<description><![CDATA[Palavras-chave: array, foreach, undefined
Arrays em javascript tem um comportamento curioso. Você pode instanciá-los com um tamanho pré-definido ou incrementá-los / decrementá-los à medida que achar necessário.
Mas, existe uma situação peculiar. Imagine a seguinte situação:
var a = new Array();
a [3] = 'd';
Ao definir a posição 3 como a letra &#8220;d&#8221; o javascript criou juntamente todas as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=38&subd=codare&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: array, foreach, undefined</p>
<p>Arrays em javascript tem um comportamento curioso. Você pode instanciá-los com um tamanho pré-definido ou incrementá-los / decrementá-los à medida que achar necessário.</p>
<p>Mas, existe uma situação peculiar. Imagine a seguinte situação:</p>
<pre>var a = new Array();
a [3] = 'd';</pre>
<p>Ao definir a posição 3 como a letra &#8220;d&#8221; o javascript criou juntamente todas as três posições que a antecedem (0, 1 e 2). Veja o que acontece quando itera sobre esse array utilizando um for comum:</p>
<pre>for( i = 0; i &lt; a.length; i++ ) {
    alert( a[i] );
}</pre>
<p>O resultado será três registros &#8220;undefined&#8221; antes da posição 3. Então, como fazer para recuperar apenas os valores que tiverem tiverem sido definidos? A solução é o que, em outras linguagens, chamamos de foreach. Sua utilização faz uso do operador for de uma maneira diferente:</p>
<pre>for( i in a ) {
    alert( a[i] );
}</pre>
<p>O foreach em Javascript irá navegar em todos os valores do Array <code>a</code> que não forem undefined e atribuirá em <code>i</code> o índice desses valores no array.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codare.wordpress.com/38/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codare.wordpress.com/38/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codare.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codare.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codare.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codare.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codare.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codare.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codare.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codare.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codare.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codare.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codare.net&blog=417062&post=38&subd=codare&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://codare.net/2006/09/21/javascript-arrays-com-valores-vazios-undefined/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8e87db536597b01a4a3c95def4ad1c8f?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">hoshi</media:title>
		</media:content>
	</item>
	</channel>
</rss>