<?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>Como Criar Sites &#124; Aprenda grátis como fazer seu site &#187; Javascript</title>
	<atom:link href="http://www.comocriarsites.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.comocriarsites.com</link>
	<description>Aprenda a criar sites, html e manhas para fazer seu site.</description>
	<lastBuildDate>Wed, 06 Jan 2010 12:51:19 +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>Criando layout tableless (div), com Ajax.</title>
		<link>http://www.comocriarsites.com/ajax/criando-layout-tableless-div-com-ajax/</link>
		<comments>http://www.comocriarsites.com/ajax/criando-layout-tableless-div-com-ajax/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 20:09:39 +0000</pubDate>
		<dc:creator>Raoni Novellino</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tableless]]></category>

		<guid isPermaLink="false">http://www.comocriarsites.com/?p=224</guid>
		<description><![CDATA[Vamos fazer um site com Ajax, e para quem não souber o que é Ajax, vai um breve comentário.
Ajax significa Asynchronous Javascript And XML. Quer dizer que Ajax nada mais é do que uma capacidade (ferramenta, biblioteca), de fazer com que, em Javascript, eu possa fazer requisições HTTP (e, dependendo do navegador, posso fazer outros [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: xx-large; font-family: Algerian;">V</span>amos fazer um site com Ajax, e para quem não souber o que é Ajax, vai um breve comentário.</p>
<p>Ajax significa Asynchronous Javascript And XML. Quer dizer que Ajax nada mais é do que uma capacidade (ferramenta, biblioteca), de fazer com que, em Javascript, eu possa fazer requisições HTTP (e, dependendo do navegador, posso fazer outros tipo de conexões). As requisições que o Ajax faz, podem ser síncronas ou assíncronas. Se for síncrona, o script ficará esperando o retorno da requisição para continuar a executar o seu código. Se for assíncrona, o script enviará a requisição e continuará a sua execução normalmente, e o retorno dessa requisição deverá ser tratado por uma outra função.</p>
<p>O XML nem sempre é usado para trafegar as informações em Ajax, mas como o nome já pegou, então ficou assim mesmo, mas podemos utilizar qualquer tipo de protocolo texto (como <em><strong>JSON</strong></em>), para trafegar as informações via Ajax.</p>
<p>O principal motivo para desenvolver uma página (web site) com Ajax, é faze-la ficar mais interativa com o usuário, mais dinâmica e criativa.</p>
<p>Para saber um pouco mais sobre Ajax, acesse <a href="http://pt.wikipedia.org/wiki/AJAX_%28programa%C3%A7%C3%A3o%29">AJAX (programação)</a>.</p>
<h2>O Código <em>HTML</em> do Layout em <em>Div</em></h2>
<p>Vamos pegar o layout do post <a href="http://www.comocriarsites.com/html/definindo-um-layout-de-website-sem-tabelas-tableless/">Definindo um Layout de Website sem Tabelas (Tableless)</a>, e retirar a parte mais a direita dele, para que a parte do meio do layout, contenha somente o menu e o miolo.</p>
<p>O código ficará como abaixo (arquivo <em>index.html</em>):</p>
<div style="background-color: white; overflow-x: auto;">
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-type" content="text/html;charset=ISO-8859-1" /&gt;
&lt;title&gt;Exemplo Estrutura de Site Tableless&lt;/title&gt;

&lt;link rel="stylesheet" type="text/css" href="estilo.css" /&gt;
&lt;script language="javascript" src="script.js"&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;div id="todo"&gt;
	&lt;div id="topo"&gt;
		&lt;div id="logo"&gt;Logo&lt;/div&gt;

		Aqui pode ser uma imagem de background e um texto.
	&lt;/div&gt;

	&lt;div id="meio"&gt;
		&lt;div id="esquerda"&gt;
			&lt;div id="menu"&gt;
				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'principal');"&gt;Principal&lt;/a&gt;&lt;/div&gt;
				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'empresa');"&gt;Empresa&lt;/a&gt;&lt;/div&gt;
				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'produtos');"&gt;Produtos&lt;/a&gt;&lt;/div&gt;

				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'servicos');"&gt;Serviços&lt;/a&gt;&lt;/div&gt;
				&lt;div&gt;&lt;a href="javascript: void(0);" onclick="ajaxHTMLmiolo('miolo', 'contato');"&gt;Contato&lt;/a&gt;&lt;/div&gt;
			&lt;/div&gt;
		&lt;/div&gt;

		&lt;div id="miolo"&gt;
			&lt;div&gt;Seção 1&lt;/div&gt;
			&lt;div&gt;Seção 2&lt;/div&gt;

			&lt;div&gt;Seção 3&lt;/div&gt;
		&lt;/div&gt;

		&lt;div style="clear: both;"&gt;&lt;/div&gt;
	&lt;/div&gt;

	&lt;div id="rodape"&gt;
		&lt;div id="rodape_direita"&gt;
			Av. xxx yyy zzz, No 765&lt;br/&gt;
			Manaus - AM - CEP: 89000-000&lt;br/&gt;
			Email: &lt;a href="mailto:seuemail@seudominio.com.br"&gt;seuemail@seudominio.com.br&lt;/a&gt;

		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Maiores explicações sobre o layout, pode encontrar no link passado para o post.</p>
<p>As únicas mudanças foram a parte direita do layout que foi deletada, os menus agora são links (tag <em><strong>&lt;a&gt;</strong></em> com atributo <em>onclick</em> para chamada do <em><strong>Javascript</strong></em>), e foi inserida uma linha chamando o script <strong><em>script.js</em></strong>. Esse script contém a programação em <strong><em>Javascript</em></strong> para fazer a requisição em Ajax.</p>
<p>Uma outra mudança foi no arquivo de folhas de estilo <strong><em>estilo.css</em></strong>. Ele está sem os estilos da parte direita do layout e foi adicionado uma classe, para a frase que indica que o Ajax está carregando uma página, no nosso caso, a frase é simplesmente &#8220;Carregando&#8230;&#8221;, mas a classe está vazia, adicione os estilos que achar necessário.</p>
<h2>O Código <em>Javascript</em></h2>
<p>O código Javascript precisa fazer tudo que o navegador faz automáticamente quando se coloca um link no web site: enviar a requisição, esperar pela resposta, pegar a resposta quando essa estiver pronta, tratar a resposta e exibir o que for necessário.</p>
<p>O código do arquivo <strong><em>script.js</em></strong> vai abaixo:</p>
<div style="background-color: white; overflow-x: auto;">
<pre>function getNewHttpRequest() {
	try {
		xmlhttp = new XMLHttpRequest();
	} catch(ee) {
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(E) {
				xmlhttp = false;
			}
		}
	}

	return(xmlhttp);
}

oAjax = getNewHttpRequest();

//Fila de conexões
fila = [];
ifila = 0;

// funcao para altear o conteudo do miolo
function ajaxHTMLmiolo(id, conteudo) {
	ajaxHTML(id, 'conteudo.php?conteudo='+conteudo);
}

//Executa a próxima conexão da fila
function ajaxRun() {
	//Abre a conexão
	oAjax.open("GET", fila[ifila][1], true);
	//Função para tratamento do retorno
	oAjax.onreadystatechange = function() {
		if (oAjax.readyState == 4) {
			//Mostra o HTML recebido
			retorno = unescape(oAjax.responseText.replace(/\+/g, " "));
			document.getElementById(fila[ifila][0]).innerHTML = retorno;
			//Roda o próximo
			ifila++;
			if(ifila &lt; fila.length) setTimeout("ajaxRun()", 20);
		}
	};

	//Executa
	oAjax.send(null);
}

function ajaxHTML(id, url) {
	//Carregando...
	document.getElementById(id).innerHTML="&lt;span class='carregando'&gt;"+"Carregando...&lt;/span&gt;";
	//Adiciona à fila
	fila[fila.length] = [id, url];
	//Se não há conexões pendentes, executa
	if((ifila+1) == fila.length) ajaxRun();
}</pre>
</div>
<p>Agora vamos as explicações.</p>
<p>Começando pela função <em><strong>getNewHttpRequest</strong></em>, que não recebe parâmetro, e retorna um objeto <em>XMLHTTP</em>. Esse objeto é o responsável pelas requisições que iremos fazer. Os blocos <em>try {&#8230;} catch() {&#8230;}</em>, tentam pegar o objeto <em>XMLHTTP</em> de várias formas, por causa das várias formas de pegar esse objeto de navegadores diferentes. Se não conseguir nenhuma, retorna <em>false</em>.</p>
<p>Abaixo pego o objeto XMLHTTP e coloco na variável <em><strong>oAjax</strong></em> e logo abaixo defino as minhas variáveis da fila de requisições.</p>
<h3>Por que uma fila de requisições?</h3>
<p>Tenho uma fila de requisições para organizar as minhas requisições <strong><em>Ajax</em></strong>, pois sem ela, se o usuário clicar em vários links antes de esperar a resposta de uma requisição, ou eu tenho que instanciar vários objetos do <strong><em>Ajax</em></strong> (<em>XMLHTML</em>), ou vai dar um erro no script que executa a requisição, quando uma outra requisição é feita antes de esperar a primeira terminar. A fila resolve esse problema, pois somente uma requisição é feita por vez, e se houver outra requisição na fila, ela é chamada logo após a requisição atual terminar.</p>
<p>A função <strong><em>ajaxHTMLmiolo</em></strong> serve para fazer uma requisição em <em><strong>Ajax</strong></em> que pega o conteúdo do miolo da página, que é o conteúdo da tag <strong><em>div</em></strong> que tem o atributo <em>id</em> igual a <em>miolo</em>, nesse layout é onde o conteúdo do web site será exibido. Essa função recebe dois argumentos, o primeiro é o id do elemento que vai ser exibido o resultado da requisição, o segundo é uma string que é enviada para o servidor para saber qual conteúdo buscar para exibir. Ela chama a função genérica de requisição <strong><em>Ajax</em></strong>, a <strong><em>ajaxHTML</em></strong>, que recebe o id do elemento que vais ser alterado e a URL que vai ser requisitada.</p>
<p>A função <strong><em>ajaxHTML</em></strong> coloca uma requisição na fila de requisições e tenta fazer essa requisição, se a fila estiver vazia, chamando a função <em><strong>ajaxRun</strong></em>, se não estiver vazia, ela não faz nada, pois assim que for a vez da requisição colocada, ela será feita.</p>
<p>A função<em><strong> ajaxRun</strong></em> pega a requisição que está na vez, na fila de requisições, e a executa, pelo método<em> GET</em>. A linha</p>
<div style="background-color: white; overflow-x: auto;">
<pre>	oAjax.open("GET", fila[ifila][1], true);</pre>
</div>
<p>diz que é para abrir a conexão com a <em>URL</em> que está na fila, pelo método <em>GET</em>. O último parâmetro quer dizer que essa requisição tem que ser feita pelo modo assíncrono. Se o último parâmetro for <em>false</em>, a requisição seria feita no modo síncrono.</p>
<p>Para saber mais sobre o método GET, acesse <a href="http://www.comocriarsites.com/html/como-funciona-os-metodos-get-e-post-diferencas/">Como Funciona os Métodos GET e POST – Diferenças</a>.</p>
<p>Na linha</p>
<div style="background-color: white; overflow-x: auto;">
<pre>	oAjax.onreadystatechange = function() {</pre>
</div>
<p>estou informando ao objeto que a função seguinte é a função que eu quero que ele execute quando o estado da minha requisição mudar. Essa função normalmente é chamada de função de <em>callback</em>, ela fica esperando algum evento acontecer para executar, sem interromper a execução do código. Nesse caso, ela espera o evento de alteração de estado da requisição ocorrer para ser chamada, logo, ela provavelmente será chamada mais de uma vez, pois durante uma requisição o estado muda algumas vezes.</p>
<p>Essa função de <em>callback</em> vai testar se o estado atual da requisição é o estado que eu quero, com a linha:</p>
<div style="background-color: white; overflow-x: auto;">
<pre>		if (oAjax.readyState == 4) {</pre>
</div>
<p>O estado do objeto <strong><em>Ajax</em></strong> que eu quero é igual a 4, que é o estado onde a resposta foi lida por completo. Para ver uma lista dos estados do objeto <em><strong>Ajax</strong></em>, acesse <a href="http://www.w3.org/TR/XMLHttpRequest/">XMLHttpRequest</a>.</p>
<p>Após a resposta estar pronta, eu a pego e coloco em uma variável, fazendo uma substituição de todos os sinais de &#8220;mais&#8221; (&#8217;+'), por um espaço em branco. Se faz essa substituição, pois a resposta vem codificada como <em>URL</em>, e nessa codificação, os espaços são convertidos em sinais de &#8220;mais&#8221; (&#8217;+'). A linha que faz isso é a linha abaixo:</p>
<div style="background-color: white; overflow-x: auto;">
<pre>		retorno = unescape(oAjax.responseText.replace(/\+/g, " "));
		document.getElementById(fila[ifila][0]).innerHTML = retorno;</pre>
</div>
<p>A outra linha pega o elemento que tem o atributo <em>id</em> igual ao que foi passado para a requisição e coloca a resposta como conteúdo desse elemento, no caso do elemento em questão (<em>div</em>), faz o conteúdo ser exibido, mas pode ser feito para qualquer tipo de conteúdo, até um campo <em>hidden</em> (escondido) ou para preencher um <em>selectbox</em>.</p>
<div style="background-color: white; overflow-x: auto;">
<pre>		ifila++;
		if(ifila &lt; fila.length) setTimeout("ajaxRun()", 20);</pre>
</div>
<p>As linhas acima fazem o controle da fila, a primeira incrementa a posição da fila, fazendo a próxima requisição ser lida, se houver. A segunda linha verifica se o tamanho da fila é maior que a posição atual de leitura da fila, se for, é porque ainda existe requisição a ser feita, então ele programa um <em>timer</em> para em 20 milisegundos, para ser executada essa requisição.</p>
<p>Aqui termina a função de <em>callback</em>, ela será executada após o envio da requisição.</p>
<p>A última linha da função <em><strong>ajaxRun</strong></em></p>
<div style="background-color: white; overflow-x: auto;">
<pre>	oAjax.send(null);</pre>
</div>
<p>faz com que a requisição seja feita (enviada). O parâmetro dela, passado como <em>null</em>, indica que não estou enviando nada na requisição, porque já enviei o que eu queria pela <em>URL</em> passada.</p>
<h2>O Código <em>PHP</em></h2>
<p>O código em <strong><em>PHP</em></strong> serve para fornecer o conteúdo requisitado pelo <em><strong>Ajax</strong></em>, perceba que a nossa <em>URL</em> da requisição <em>Ajax</em> tem como endereço o arquivo <em><strong>conteudo.php</strong></em>, lá na função <em><strong>ajaxHTMLmiolo</strong></em>, e o código desse arquivo (<em><strong>conteudo.php</strong></em>), vai abaixo:</p>
<div style="background-color: white; overflow-x: auto;">
<pre>&lt;?php

$conteudo = $_GET["conteudo"];

if($conteudo == "principal") {
	$fileToRead = "conteudo/principal.html";
}
else if($conteudo == "empresa") {
	$fileToRead = "conteudo/empresa.html";
}
else if($conteudo == "produtos") {
	$fileToRead = "conteudo/produtos.html";
}
else if($conteudo == "servicos") {
	$fileToRead = "conteudo/servicos.html";
}
else if($conteudo == "contato") {
	$fileToRead = "conteudo/contato.html";
}

$conteudoArquivo = file_get_contents($fileToRead);

print(urlencode($conteudoArquivo));

?&gt;</pre>
</div>
<p>Ele simplesmente pega o valor do <strong><em>&#8220;conteudo&#8221;</em></strong>, que foi passado pelo método <em>GET</em> (olha novamente a <em>URL</em> passada na função <em><strong>ajaxHTMLmiolo</strong></em>), e compara com as strings acima. Cada <em>if</em> faz ele colocar na variável <strong><em>$fileToRead</em></strong> um caminho para um arquivo. Na penúltima linha ele joga todo o conteúdo do arquivo para a variável <em><strong>$conteudoArquivo</strong></em>, e na última linha ele codifica para <em>URL</em> e imprime na <em>&#8220;tela&#8221;</em> com a função <em><strong>print</strong></em>. A impressão na tela, é a resposta que o <strong><em>Ajax</em></strong> pega. QUALQUER coisa que você imprima na tela, vai ser o retorno da sua requisição <em><strong>Ajax</strong></em>, até mesmo se der um erro no script <em>PHP</em>, caso esteja configurado para exibir o erro na tela, o <em><strong>Ajax</strong></em> vai pegar como retorno.</p>
<p>Não vou colocar o conteúdo dos arquivos <em>HTML</em> de resposta, mas você pode ver o exemplo todo rodando em <a href="http://www.comocriarsites.com/exemplos/SiteTablelessAjax/">http://www.comocriarsites.com/exemplos/SiteTablelessAjax/</a>. Lá você mesmo pode pegar os arquivos <em>HTML</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.comocriarsites.com/ajax/criando-layout-tableless-div-com-ajax/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Função getElementById() do Javascript</title>
		<link>http://www.comocriarsites.com/javascript/funcao-getelementbyid-do-javascript/</link>
		<comments>http://www.comocriarsites.com/javascript/funcao-getelementbyid-do-javascript/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 07:21:52 +0000</pubDate>
		<dc:creator>Raoni Novellino</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[formulario]]></category>
		<category><![CDATA[getElementById]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://www.comocriarsites.com/?p=131</guid>
		<description><![CDATA[A função getElementById() do Javascript é uma função muito utilizada quando queremos fazer um site mais interativo. Essa função pode retornar o objeto de qualquer elemento na página que tenha um id único, e também funciona na maioria dos navegadores.
A função getElementById() do Javascript é bem fácil de usar, e é útil em muitas ocasiões. [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: xx-large;">A</span> função <em>getElementById()</em> do Javascript é uma função muito utilizada quando queremos fazer um site mais interativo. Essa função pode retornar o objeto de qualquer elemento na página que tenha um id único, e também funciona na maioria dos navegadores.</p>
<p>A função <em>getElementById()</em> do Javascript é bem fácil de usar, e é útil em muitas ocasiões. Vamos exemplificar algumas para melhor entendimento.</p>
<h3><em>getElementById()</em> para Tratamento e Envio de Formulário</h3>
<p>Vamos supor que eu quero fazer alguma verificações do formulário antes de envia-lo. Eu posso chamar uma função Javascript que faz uso do <em>getElementById()</em> para fazer as verificações necessárias antes de realmente enviar o formulário, porque caso as verificações não procedam, eu posso não enviar o formulário. Vamos ao código:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;Exemplo de getElementById() no Formulário&lt;/title&gt;

&lt;style type="text/css"&gt;

#msg_erro {
	color: red;
	font-weight: bold;
}

&lt;/style&gt;

&lt;/head&gt;
&lt;body&gt;

&lt;script language="JavaScript"&gt;

function teste_submit()
{
	var obj_form = document.getElementById('form_teste');
	var obj_nome = document.getElementById('nome_teste');
	var obj_cargo = document.getElementById('cargo_teste');
	var obj_msg_erro = document.getElementById('msg_erro');
	var msg_erro = '';

	if(obj_nome.value == '')
		msg_erro = 'campo NOME vazio';
	else if(obj_cargo.value == '')
		msg_erro = 'campo CARGO vazio';

	if(msg_erro == '')
		obj_form.submit();
	else
		obj_msg_erro.innerHTML = msg_erro;
}

&lt;/script&gt;

&lt;form id="form_teste" action="http://www.comocriarsites.com" method="post"&gt;
Nome: &lt;input type="text" id="nome_teste" name="nome_teste"&gt;&lt;BR&gt;
Cargo: &lt;input type="text" id="cargo_teste" name="cargo_teste"&gt;&lt;BR&gt;
&lt;input type="Button" value="Enviar" onclick="teste_submit();"&gt;
&lt;/form&gt;
&lt;div id="msg_erro"&gt;&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Algumas pessoas que conhecem um pouco de Javascript podem dizer &#8220;<em>eu posso fazer a mesma coisa com o onSubmit</em>&#8220;, mas nós não estamos vendo o <em>onSubmit</em> e sim o <em>getElementById()</em>. <img src='http://www.comocriarsites.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Você pode ver esse exemplo da função <em>getElementById()</em> funcionando em <a title="Exemplo de getElementById() no Formulário" href="http://www.comocriarsites.com/exemplos/getElementById_form.html">Exemplo de getElementById() no Formulário</a>.</p>
<p>No código acima temos um formulário HTML com dois campos e um botão de enviar, uma tag <em><strong>&lt;div&gt;</strong></em> para mensagem de erro e uma função Javascript identificada por <em>teste_submit()</em>. Quando o botão de enviar for pressionado, vai ser chamada a função Javascript <em>teste_submit()</em>. Essa função pega os objetos do formulário, dos campos do fomulário e do <strong><em>&lt;div&gt;</em></strong>, verifica se algum dos campos está vazio, e se algum deles estiver vazio, ele grava uma string em uma variável local (<em>msg_erro</em>) e depois faz essa string aparecer na tela. Se os dois campos não estiverem vazios, a função submete (envia) o formulário.</p>
<p>Os passos de pegar os objetos dos elementos do documento são feitos com a função <em>getElementById()</em>, que é uma função do documento, por isso tenho que colocar o <em>document</em> antes da função<em> getElementById()</em>. Como parametro da  função <em>getElementById()</em> tenho que colocar o idetificador único do elemento, que se define pelo atributo <em>id</em>.</p>
<p>Se você está usando uma linguagem no lado do servidor (PHP, ASP ou outras), isso faz com que reduza a carga no servidor, pois tratamos certos erros antes de realmente enviar o formulário. E isso agiliza o processo para o cliente também, que não precisa esperar carregar uma nova página para saber que o formulário que ele tentou enviar está faltando alguma coisa ou está errado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.comocriarsites.com/javascript/funcao-getelementbyid-do-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Popup com DIV sem Nova Janela (Float Popup)</title>
		<link>http://www.comocriarsites.com/javascript/popup-com-div-sem-nova-janela-float-popup/</link>
		<comments>http://www.comocriarsites.com/javascript/popup-com-div-sem-nova-janela-float-popup/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 06:39:40 +0000</pubDate>
		<dc:creator>Raoni Novellino</dc:creator>
				<category><![CDATA[HTML CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[banner]]></category>
		<category><![CDATA[criar site]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[estilo]]></category>
		<category><![CDATA[fazer site]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[popup]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[style]]></category>

		<guid isPermaLink="false">http://www.comocriarsites.com/?p=19</guid>
		<description><![CDATA[Nesse post vou mostrar como fazer uma janela popup sem que o navegador abra realmente uma nova janela, com a tag div. Isso é bom pois todos os navegadores hoje bloqueiam popup de nova janela, mas é muito díficil ter bloqueado o Javascript, que é o que utilizaremos também para fazer o div aparecer e [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: xx-large;">N</span>esse post vou mostrar como fazer uma janela popup sem que o navegador abra realmente uma nova janela, com a tag <strong><em>div</em></strong>. Isso é bom pois todos os navegadores hoje bloqueiam popup de nova janela, mas é muito díficil ter bloqueado o <em>Javascript</em>, que é o que utilizaremos também para fazer o <strong><em>div</em></strong> aparecer e desaparecer.</p>
<p>Vamos dividir esse código em arquivos, abaixo descrevo os arquivos:</p>
<p><em><strong>index.html</strong></em>: Esse arquivo pode ser qualquer arquivo HTML que você queira colocar o banner.</p>
<p><em><strong>banner.js</strong></em>: Arquivo onde ficarão todos os códigos <em>javascript</em> para mostrar e esconder o popup.</p>
<p><strong><em>banner.css</em></strong>: Arquivo que contém as classes de estilo. Pode conter outras classes dentro dele ou você pode modificar as classes do popup.</p>
<h2>O Arquivo index.html</h2>
<p>No arquivo <strong><em>index.html</em></strong>, você precisa chamar os outros dois arquivos, <em><strong>banner.js</strong></em> e <strong><em>banner.css</em></strong>. Para chamar o <strong><em>banner.js</em></strong>, use a seguinte linha:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;script language="JavaScript" src="http://url.para/script/banner.js"&gt;&lt;/script&gt;</pre>
</div>
<p>Mude a url no atributo <em>src</em> para a url correta onde está o arquivo <strong><em>banner.js</em></strong>.</p>
<p>Para chamar o arquivo <em><strong>banner.css</strong></em>, use a seguinte linha:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;link href="http://url.para/estilo/banner.css" rel="stylesheet" type="text/css" /&gt;</pre>
</div>
<p>Mude a url no atributo <em>href</em> para a url correta onde está o arquivo <em><strong>banner.css</strong></em>.</p>
<p>Essas linhas normalmente são chamadas dentro do cabeçalho do documento html (entre a tag <strong><em>&lt;head&gt;</em></strong> e <strong><em>&lt;/head&gt;</em></strong>).</p>
<h3>O Código HTML</h3>
<p>No corpo do documento html (entre as tags <strong><em>&lt;body&gt;</em></strong> e <em><strong>&lt;/body&gt;</strong></em>), entra o código:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;div id="banner_popup" style="position:absolute; top: 0px; left: 0px; display: none;"&gt;
	&lt;table border="0" cellpadding="0" cellspacing="0"&gt;
		&lt;tr&gt;
			&lt;td align="right"&gt;&lt;strong&gt;&lt;a href="javascript: void(0);" onclick="fecha_banner();" class="linksFechar"&gt;&lt;img src="http://localhost/blog_exemplo/banner_popup/icone-fechar.gif" border="0"&gt; Fechar&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;a href="http://www.comocriarsites.com/" target="_blank"&gt;&lt;img src="http://localhost/blog_exemplo/banner_popup/Ninfeias.jpg" border="0"&gt;&lt;/a&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
&lt;/div&gt;</pre>
</div>
<p>A primeira linha é uma tag <strong><em>&lt;div&gt;</em></strong>, tem o atributo <em>id</em> igual a <em>banner_popup</em> &#8211; esse id nós vamos utilizar para achar o <strong><em>div</em></strong> no documento pelo <em>Javascript</em>. O outro atributo do <strong><em>div</em></strong> é o <em>style</em> &#8211; esse atributo define o estilo do nosso componente, no caso o <strong><em>div</em></strong>. Ele define que o <em><strong>&lt;div&gt;</strong></em> vai ficar em posição absoluta, a 0 (zero) pixels do topo e da esquerda da página, e não vai ser renderizado (mostrado) na página (<em>display: none;</em>).</p>
<p>Para mais referências de folha de estilo (CSS) entre em <a title="Entendendo CSS (folhas de estilo): Cascading Style Sheet - Parte 1" href="http://www.comocriarsites.com/html-css/entendendo-css-folhas-de-estilo-cascading-style-sheet-parte-1/">Entendendo CSS (folhas de estilo): Cascading Style Sheet &#8211; Parte 1</a> e <a title="Entendendo CSS (folhas de estilo): Cascading Style Sheet - Parte 2" href="http://www.comocriarsites.com/html-css/entendendo-css-folhas-de-estilo-cascading-style-sheet-parte-2/">Entendendo CSS (folhas de estilo): Cascading Style Sheet &#8211; Parte 2</a>. E para mais informações da propriedade de estilo <em>display</em> entre em <a title="Propriedade Display do Elemento (CSS)" href="http://www.comocriarsites.com/sem-categoria/propriedade-display-do-elemento-css/">Propriedade Display do Elemento (CSS)</a>.</p>
<p>Esse é o código HTML do banner propriamente dito, lógico que a tabela dentro do <em><strong>div</strong></em> você pode alterar para ficar de acordo com o seu site, mas não esqueça de colocar sempre algum lugar para fechar o banner, mesmo que ele se feche automaticamente após um tempo. Para entender um pouco mais de tabela acesse <a title="Como Funciona a Tabela (tag &lt;table&gt;) HTML" href="http://www.comocriarsites.com/html/como-funciona-a-tabela-tag-table-html/">Como Funciona a Tabela (tag &lt;table&gt;) HTML</a>.</p>
<p>No nosso banner a função que vai fecha-lo é a <em>fecha_banner()</em> que está na primeira linha da tabela, no atributo <em>onclick</em> da tag <strong><em>&lt;a&gt;</em></strong>. O atributo <em>onclick</em> executa o código <em>Javascript</em> dentro dele quando o elemento é clicado com o mouse. Podemos ver ainda na tag <em><strong>&lt;a&gt;</strong></em>, que no atributo <em>href</em>, que seria o link que ele iria seguir caso se clicasse nele, mas ele está com uma função <em>Javascript</em> (<em>javascript: void(0);</em>). O nome <em>javascript</em> no início do atributo <em>href</em> indica que eu vou usar um código <em>Javascript</em> nesse atributo, e a função <em>void(0);</em> diz que quando o link for clicado não seguir para lugar nenhum.</p>
<p>Nesse código temos duas imagens, uma faz parte do fechar do banner e a outra é o banner propriamente dito.</p>
<h3>A Chamada Javascript</h3>
<p>A última parte no nosso arquivo <em><strong>index.html</strong></em> é a chamda para a função <em>Javascript</em> que irá abrir o banner. Abaixo o código:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;script language="JavaScript"&gt;
if(document.getElementById('banner_popup'))
	abre_banner();
&lt;/script&gt;</pre>
</div>
<p>Esse código deve vir logo antes da tag <em><strong>&lt;/body&gt;</strong></em>, ou podemos colocar a função <em>abre_banner()</em> no atributo <em>onload</em> do próprio <em><strong>&lt;body&gt;</strong></em>. Esse código só faz verificar se existe um elemento com o identificador <em>banner_popup</em>, e se houver, chama a função para exibir o banner.</p>
<h3>O Arquivo index.html Completo</h3>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;Banner Popup&lt;/title&gt;
&lt;link href="banner.css" rel="stylesheet" type="text/css" /&gt;
&lt;script language="JavaScript" src="banner.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div id="banner_popup" style="position:absolute; top: 0px; left: 0px; display: none;"&gt;
	&lt;table border="0" cellpadding="0" cellspacing="0"&gt;
		&lt;tr&gt;
			&lt;td align="right"&gt;&lt;strong&gt;&lt;a href="javascript: void(0);" onclick="fecha_banner();" class="linksFechar"&gt;&lt;img src="http://localhost/blog_exemplo/banner_popup/icone-fechar.gif" border="0"&gt; Fechar&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;a href="http://www.comocriarsites.com/" target="_blank"&gt;&lt;img src="http://localhost/blog_exemplo/banner_popup/Ninfeias.jpg" border="0"&gt;&lt;/a&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
&lt;/div&gt;

&lt;script language="JavaScript"&gt;
if(document.getElementById('banner_popup'))
	abre_banner();
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<h2>O Arquivo banner.js</h2>
<p>No arquivo <strong><em>banner.js</em></strong> vamos colocar todas nossas funções <em>Javascript</em>. Abaixo o conteúdo do arquivo:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>function fecha_banner()
{
	var banner_obj = document.getElementById('banner_popup');
	banner_obj.style.display = 'none';
}

function fecha_banner_timeout()
{
	setTimeout('fecha_banner()', 10000);
}

function abre_banner()
{
	var banner_obj = document.getElementById('banner_popup');

	banner_obj.style.left = '200px';
	banner_obj.style.top = '100px';

	banner_obj.style.display = '';

	fecha_banner_timeout();
}</pre>
</div>
<h3>A função <em>fecha_banner()</em></h3>
<p>A função <em>fecha_banner()</em> fecha o banner, obviamente. Ela é chamada quando se clica no <em>Fechar</em> do banner ou quando se passa dez segundos, como vamos ver na próxima função. Ela pega o objeto do banner através da função <em>getElementById()</em> e atribui ao estilo <em>display</em> o valor <em>none</em>, que faz o elemento deixar de ser exibido (renderizado).</p>
<h3>A função <em>fecha_banner_timeout()</em></h3>
<p>A função <em>fecha_banner_timeout()</em> chama a função <em>fecha_banner()</em> após dez segundos, utilizando a função <em>setTimeout()</em> do <em>Javascript</em>. A função <em>setTimeout()</em> do <em>Javascript</em> é bem legal, mas ela é assunto de um post futuro. Basicamente ela executa uma determinada função dado um determindo tempo, em milisegundos.</p>
<h3>A função <em>abre_banner()</em></h3>
<p>A função <em>abre_banner()</em>, como o nome diz, abre o banner, ou melhor explicando, faz ele ser exibido. Ela pega o objeto do banner, depois diz onde o banner vai aparecer definindo os estilos <em>top</em> e <em>left</em> (no nosso caso vai aparecer a 200 pixels da esquerda e a 100 pixels do topo), vai também definir o estilo <em>display</em> para vazio, que diz que vai ser utilizado o <em>display</em> padrão do elemento para renderiza-lo. Por fim, ele chama a função <em>fecha_banner_timeout()</em>, que vai esperar dez segundos para fechar o banner.</p>
<h2>O Arquivo banner.css</h2>
<p>No arquivo <em><strong>banner.css</strong></em> vamos colocar somente o estilo do link de fechar, ela pode conter outros estilos caso necessite. Abaixo o código:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>.linksFechar:link
{
 	text-decoration: none;
	font-size: 14px;
	color: #000000;
}</pre>
</div>
<p>Nesse arquivo só é definido esse estilo, que o texto não vai ser sublinhado, a fonte vai ter tamanho 14 pixels e a cor vai ser preta.</p>
<p>E juntando tudo isso vamos ter um banner popup sem abrir uma nova janela, utilizando <em>Javascript</em>.</p>
<p>Para ver esse exemplo funcionando, entre em <a title="Exemplo de Banner Popup" href="http://www.comocriarsites.com/exemplos/banner_popup/index.html">Exemplo de Banner Popup</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.comocriarsites.com/javascript/popup-com-div-sem-nova-janela-float-popup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fazendo um Menu com MouseOver e MouseOut (Menu RollOver)</title>
		<link>http://www.comocriarsites.com/html/fazendo-um-menu-com-mouseover-e-mouseout-menu-rollover/</link>
		<comments>http://www.comocriarsites.com/html/fazendo-um-menu-com-mouseover-e-mouseout-menu-rollover/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 18:37:05 +0000</pubDate>
		<dc:creator>Raoni Novellino</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[mouseout]]></category>
		<category><![CDATA[mouseover]]></category>
		<category><![CDATA[rollover]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[tableless]]></category>

		<guid isPermaLink="false">http://www.comocriarsites.com/?p=63</guid>
		<description><![CDATA[Um menu RollOver é aquele menu que muda alguma coisa quando o mouse passa sobre um item do menu, normalmente muda as cores de fundo, mas pode mudar imagens também. Nesse post vou mostrar o código HTML para gerar o menu e também um pouco de Javascript que precisaremos para fazer a mudança.
Primeiro mostrarei o [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: xx-large;">U</span>m menu RollOver é aquele menu que muda alguma coisa quando o mouse passa sobre um item do menu, normalmente muda as cores de fundo, mas pode mudar imagens também. Nesse post vou mostrar o código HTML para gerar o menu e também um pouco de Javascript que precisaremos para fazer a mudança.</p>
<p>Primeiro mostrarei o código, HTML, Javascript e um pouco de CSS. Depois vai as explicações e um exemplo de funcionamento.</p>
<h2>Código HTML do Menu</h2>
<p>Primeiro o código HTML do menu:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>	&lt;div id="menu"&gt;
		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/index.html"&gt;PRINCIPAL&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/empresa.html"&gt;A EMPRESA&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/noticia.html"&gt;NOTÍCIAS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/boletim.html"&gt;BOLETINS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/artigo.html"&gt;ARTIGOS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/bancoimagem.html"&gt;GALERIAS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/link.html"&gt;LINKS ÚTEIS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/faleconosco.html"&gt;FALE CONOSCO&lt;/a&gt;&lt;/div&gt;
	&lt;/div&gt;</pre>
</div>
<p>Esse menu é feito sem tabela (tableless), que é um &#8220;novo&#8221; conceito de desenvolvimento de páginas. Para ser feito assim, normalmente usa-se muito a tag <strong><em>&lt;div&gt;</em></strong>. No código acima temos um <strong><em>&lt;div&gt;</em></strong> externo, que tem uma classe associada a ele, essa classe veremos na segunda parte do código. Dentro desse <strong><em>&lt;div&gt;</em></strong> externo, temos um <strong><em>&lt;div&gt;</em></strong> interno para cada item do menu. Cada <strong><em>&lt;div&gt;</em></strong> interno tem os atributos <em>class</em>, <em>onmouseover</em> e <em>onmouseout</em>, explicados abaixo:</p>
<h4>class</h4>
<p>- esse atributo é usado para definir uma classe de estilo (CSS) para uma tag, e todas as tags dentro dessa tag herdam parte desse estilo.</p>
<h4>onmouseover</h4>
<p>- esse atributo especifica uma ação a fazer quando o mouse passar por cima do que essa tag exibe, no nosso caso um item do menu. E esse atributo executa um script em <em>Javascript</em>, logo a função que está lá dentro (<em>mouse_over_menu(this);</em>) é uma função <em>Javascript</em>.</p>
<h4>onmouseout</h4>
<p>- esse atributo especifica uma ação a fazer quando o mouse sai de cima do que essa tag exibe, no nosso caso, quando o mouse sair de cima de um item do menu, esse atributo diz que é para executar a função &#8220;<em>mouse_out_menu(this);</em>&#8220;, essa é uma função <em>Javascript</em>.</p>
<h2>Código CSS (estilos).</h2>
<p>A seguir vem o código da classe de estilos (CSS):</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;style type="text/css"&gt;

#menu{
	width:160px;
	height:263px;
	background-color:#fff;
}

.itemOn{
	width:150px;
	height:23px;
	padding-left:10px;
	padding-top:2px;
	background-color:#fff;
}
.itemOn a{color:#336600; text-decoration:none; font-size:16px; font-weight:bold;}
.itemOn a:hover{text-decoration:none; font-size:16px; font-weight:bold;}

.itemOver{
	width:150px;
	height:23px;
	padding-left:10px;
	padding-top:2px;
	background-image: url(bg-menu.gif);
}
.itemOver a{color:#fff; text-decoration:none; font-size:16px; font-weight:bold;}
.itemOver a:hover{text-decoration:none; font-size:16px; font-weight:bold;}

&lt;/style&gt;</pre>
</div>
<p>O estilo para o identificador <em>menu</em> (#menu), define a largura (width), altura (height) e cor de fundo (background-color) do menu. Podemos ver que o <em><strong>&lt;div&gt;</strong></em> externo do nosso menu está com esse identificador (id=&#8221;menu&#8217;), Ele irá receber esses estilos para começar a construção do nosso menu rollover.</p>
<p>Para saber um pouco mais sobre folha de estilos (CSS) acesse: <a title="Entendendo CSS (folhas de estilo): Cascading Style Sheet - Parte 1" href="http://www.comocriarsites.com/html-css/entendendo-css-folhas-de-estilo-cascading-style-sheet-parte-1/">Entendendo CSS (folhas de estilo): Cascading Style Sheet &#8211; Parte 1</a> e <a title="Entendendo CSS (folhas de estilo): Cascading Style Sheet - Parte 2" href="http://www.comocriarsites.com/html-css/entendendo-css-folhas-de-estilo-cascading-style-sheet-parte-2/">Entendendo CSS (folhas de estilo): Cascading Style Sheet &#8211; Parte 2</a>.</p>
<p>Como vemos nos estilos acima, a única diferença entre as classe de estilo <em>ItemOn</em> e<em> ItemOver</em> é que o último tem uma imagem de fundo (<em>background-image</em>).</p>
<p>Agora a única coisa que falta fazer é o nosso código em <em>Javascript</em> para fazer a troca das classes de estilo dos itens do menu quando o mouse passar por cima ou sair de cime do item.</p>
<h2>O Javascript do Menu</h2>
<p>Como sempre, o código depois as explicações:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>function mouse_over_menu(objDiv)
{
	objDiv.className = 'itemOver';
}

function mouse_out_menu(objDiv)
{
	objDiv.className = 'itemOn';
}</pre>
</div>
<p>Vou explicar o básico sobre funções em <em>Javascript</em>. Para definir uma função em <em>Javascript</em> você deve escrever o cabeçalho da função seguido do corpo da função. No cabeçalho da função você deve colocar a palavra<strong><em> function</em></strong> seguida do nome da sua função (no caso das funções acima, <strong><em>mouse_over_menu</em></strong> e <strong><em>mouse_out_menu</em></strong>, respectivamente), seguido dos parametros passados para a função, entre parenteses.</p>
<p>O corpo da função deve estar todo entre chaves, e nele você coloca códigos <em>Javascript</em> para fazerem o que você quiser. No nosso menu, esse código vai apenas mudar a classe de estilo do objeto do elemento passado pelos parametros da função. Lá no nosso código HTML, podemos ver que foi passado um <strong><em>this</em></strong> como parametro da função, esse <em><strong>this</strong></em> indica que é para passar o objeto do elemento de onde a função está sendo chamada. No nosso caso, cada item do menu vai ser passado como um objeto <em>Javascript</em> para podermos modificar a sua classe.</p>
<h2>O Código inteiro &#8211; Menu RollOver</h2>
<p>Abaixo vai como ficaria o código inteiro do nosso menu rollover.</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;html&gt;
&lt;head&gt;

&lt;style type="text/css"&gt;

#menu{
	width:160px;
	height:263px;
	background-color:#fff;
}

.itemOn{
	width:150px;
	height:23px;
	padding-left:10px;
	padding-top:2px;
	background-color:#fff;
}
.itemOn a{color:#336600; text-decoration:none; font-size:16px; font-weight:bold;}
.itemOn a:hover{text-decoration:none; font-size:16px; font-weight:bold;}

.itemOver{
	width:150px;
	height:23px;
	padding-left:10px;
	padding-top:2px;
	background-image: url(bg-menu.gif);
}
.itemOver a{color:#fff; text-decoration:none; font-size:16px; font-weight:bold;}
.itemOver a:hover{text-decoration:none; font-size:16px; font-weight:bold;}

&lt;/style&gt;

&lt;script language="JavaScript"&gt;

function mouse_over_menu(objDiv)
{
	objDiv.className = 'itemOver';
}

function mouse_out_menu(objDiv)
{
	objDiv.className = 'itemOn';
}

&lt;/script&gt;

&lt;/head&gt;
&lt;body&gt;
	&lt;div id="menu"&gt;
		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/index.html"&gt;PRINCIPAL&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/empresa.html"&gt;A EMPRESA&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/noticia.html"&gt;NOTÍCIAS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/boletim.html"&gt;BOLETINS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/artigo.html"&gt;ARTIGOS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/bancoimagem.html"&gt;GALERIAS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/link.html"&gt;LINKS ÚTEIS&lt;/a&gt;&lt;/div&gt;

		&lt;div class="itemOn" onmouseover="mouse_over_menu(this);" onmouseout="mouse_out_menu(this);"&gt;
		&lt;a href="http://www.seudominio.com/faleconosco.html"&gt;FALE CONOSCO&lt;/a&gt;&lt;/div&gt;
	&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Nesse link você pode ver esse código funcionando: <a title="exemplo de menu rollover html javascript" href="http://www.comocriarsites.com/exemplos/menu_rollover.html">Menu RollOver</a></p>
<p>Se gostou comente. <img src='http://www.comocriarsites.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.comocriarsites.com/html/fazendo-um-menu-com-mouseover-e-mouseout-menu-rollover/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Pegando Posição Absoluta de um Elemento HTML (Javascript)</title>
		<link>http://www.comocriarsites.com/javascript/pegando-posicao-absoluta-de-um-elemento-html-javascript/</link>
		<comments>http://www.comocriarsites.com/javascript/pegando-posicao-absoluta-de-um-elemento-html-javascript/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 06:36:42 +0000</pubDate>
		<dc:creator>Raoni Novellino</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[absoluta]]></category>
		<category><![CDATA[criar site]]></category>
		<category><![CDATA[fazer site]]></category>
		<category><![CDATA[getElementById]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[posição]]></category>
		<category><![CDATA[site]]></category>

		<guid isPermaLink="false">http://www.comocriarsites.com/?p=23</guid>
		<description><![CDATA[Uma maneira simples de saber qual a posição absoluta de um elemento HTML (posição onde o elemento está em relação a área de exibição de páginas do navegador), é usando um algorítimo em Javascript. Esse algorítimo pega a posição relativa do elemento, e depois a posição relativa do elemento pai (parent), depois do pai do [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: xx-large;">U</span>ma maneira simples de saber qual a posição absoluta de um elemento HTML (posição onde o elemento está em relação a área de exibição de páginas do navegador), é usando um algorítimo em <em>Javascript</em>. Esse algorítimo pega a posição relativa do elemento, e depois a posição relativa do elemento <em>pai</em> (parent), depois do <em>pai</em> do <em>pai</em> e assim até um elemento não ter um elemento <em>pai</em>.</p>
<p>O algorítimo:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>function findPosX(obj)
{
	var curleft = 0;
	if(obj.offsetParent)
		while(1)
		{
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;

	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;

	return curtop;
}</pre>
</div>
<p>São dois algorítimos, um para a posição horizontal (<em>findPosX</em>) e outro para a posição vertical (<em>findPosY</em>). Os dois recebem um atributo de nome <em>obj</em> que é o objeto do elemento que você quer saber a posição e retornam um inteiro, que é a posição do elemento no documento HTML.</p>
<p>As funções do <em>Javascript</em> <strong><em>offsetLeft</em></strong> e <strong><em>offsetTop</em></strong>, retornam um inteiro que é a distântcia em pixels entre o elemento passado como paramatro e o elemento pai desse elemento passado comoparametro. A diferença entre as duas é que a primeira (<strong><em>offsetLeft</em></strong>), retorna a distância da esquerda entre o elemento e seu elemento pai, e a segunda (<strong><em>offsetTop</em></strong>), retorna a distância de cima entre o elemento e seu elemento pai.</p>
<p>Abaixo um exemplo de uso:</p>
<div style="background-color: #FFFFFF; overflow-x: auto;">
<pre>&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;Teste de Posicionamento em Javascript&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;script language="JavaScript"&gt;

function findPosX(obj)
{
  var curleft = 0;
  if(obj.offsetParent)
      while(1)
      {
        curleft += obj.offsetLeft;
        if(!obj.offsetParent)
          break;
        obj = obj.offsetParent;
      }
  else if(obj.x)
      curleft += obj.x;
  return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
				break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;

	return curtop;
}

&lt;/script&gt;

&lt;table&gt;
	&lt;tr&gt;
		&lt;td&gt;Linha 1&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Linha 2&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;
		&lt;table&gt;
			&lt;tr&gt;
				&lt;td id="td_posicao"&gt;Quero saber a posicao desse TD&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;script language="JavaScript"&gt;

var td_pos_obj = document.getElementById('td_posicao');

var x = findPosX(td_pos_obj);
var y = findPosY(td_pos_obj);

alert('pos x: ' + x + ' - pos y: ' + y);

&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>Algumas explicações:</p>
<p>A linha &#8220;<span style="color: #000080;"><em>var td_pos_obj = document.getElementById(&#8217;td_posicao&#8217;);</em></span>&#8221; faz a variável <em>td_pos_obj</em> ficar identificando o elemento que e quero saber a posição. Pode ver que na tag <em><strong>&lt;td&gt;</strong></em> que eu quero saber a posição, tem um atributo <em>id</em>, com valor igual a <em>td_posicao</em>. Isso serve para eu identificar o elemento e depois poder saber qual ele é facilmente utilizando a função <em>getElementById</em> do Javascript. Essa função é boa porque funciona tanto no IE (acho que pelo menos no 6 e no 7) e no Firefox (testado na versao 2 e 3).</p>
<p>Se você quer saber a diferênça entre os valores do estilo (style) <em>position</em>, acesse: <a title="CSS Style Position: Diferença entre Relative, Absolute e Static" href="http://www.comocriarsites.com/html-css/css-style-position-diferenca-entre-relative-absolute-e-static/">CSS Style Position: Diferença entre Relative, Absolute e Static</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.comocriarsites.com/javascript/pegando-posicao-absoluta-de-um-elemento-html-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
