Nov62006
Mostrar-esconder conteúdo via DOM V.2
Show-hide content with DOM V.2
Ontem, ao redigir o artigo sombra em imagem com DOM e CSS, percebi que o script de mostrar-esconder conteúdo poderia receber uma melhoria. Ao invés de procurar cada classe CSS que se referisse à outra língua (no meu caso o inglês), por que não utilizar o atributo lang inserido dentro das referidas tags?? Pois é, essa foi a sacada!
Novo código
var arrEls = new Array("h1","h2","h3","h4","h5","h6", "p","span","ul","ol","blockquote")function getTextNodeByLangName(tag,eventNode) {var els = document.getElementsByTagName(tag);var idLink = 'showHideTextNode';var messageShow = '[+] Show english content’;var messageHide = '[-] Hide english content’;var linkTextNode = document.getElementById(idLink);for (i = 0; i < els.length; i++) {var lang = els[i].getAttribute(”lang”);if (lang == 'en') {if (eventNode == 'hide') {linkTextNode.innerHTML = messageShow;linkTextNode.className = "link-show";linkTextNode.onclick = function() {for (j = 0; j < arrEls.length; j++) {getTextNodeByLangName(arrEls[j],’show’);}};els[i].style.display = ‘none’;} else if (eventNode == 'show') {linkTextNode.innerHTML = messageHide;linkTextNode.className = "link-hide";linkTextNode.onclick = function() {for (j = 0; j < arrEls.length; j++) {getTextNodeByLangName(arrEls[j],’hide’);}};els[i].style.display = ‘block’;}}}}function init_textNode() {if (!document.getElementsByTagName) returnfor (j = 0; j < arrEls.length; j++) {getTextNodeByLangName(arrEls[j],’hide’);}}addLoadEvent(init_textNode);
A grande mudança está na localização do atributo lang, como a seguir:
var lang = els[i].getAttribute(”lang”);if (lang == 'en') {
Agora, a classe que antes era responsável por esconder os conteúdos, agora ficou apenas com o trabalho de estilizar estas áreas. ;)

RamonPage.com . Web na ponta do lápis » Blog Archive » Mostrar-esconder conteúdo via DOM - 6/11/06 às 8:42 am
[...] Atualização 2006-11-06: Versão 2.0 concluída, ver http://ramonpage.com/2006/11/06/mostrar-esconder-conteudo-via-dom-v2/ [...]