quinta-feira, 13 de janeiro de 2011

Função eval() - Variáveis Variáveis em Javascript

Já deve ser a terceira vez que eu preciso fazer uma variável variável em Javascript e que eu perco MUITO tempo em sites de buscas tentando relembrar como faz. Por isso, vou postar a solução aqui, quem sabe ajuda mais alguém além de mim mesmo!

Geralmente eu uso variáveis variáveis dentro de um loop for, como que para "linkar" dois loops... enfim... vamos ao exemplo:



  1. function bloCollapse(){
  2. //identificar a raiz do hotsite que o sujeito está... 
  3. //independente da terminação da página.... 
  4. //(limpar as bugigangas em outras palavras
  5. var barra = document.URL.lastIndexOf('/');
  6. var urlHsHome = document.URL.substr(0,barra);
  7. //array de elementos com a TAG Span
  8. itemCollapse = document.getElementById('blocollapse').getElementsByTagName('span');
  9. //loop for
  10. for(i=0;i<itemCollapse.length;i++) {
  11. //uso do loop, convencional (exceto pelo innerHTML, talvez)
  12. itemCollapse[i].innerHTML = "<a href='"+urlHsHome+"/venhatreinar#"+itemCollapse[i].parentNode.getElementsByTagName('h3')[0].innerHTML+">+info</a>";
  13.     // aqui o grande truque!!!!
  14.     // o eval deve pegar a linha toda, em ASPAS
  15.     // fora das aspas, apenas o índice da variável variável!
  16.     // destacado em cores para ficar bem claro
  17.     eval("teste"+i +" = itemCollapse[i].parentNode.getElementsByTagName('h3')[0].innerHTML;")
  18.     // assim você gera uma série de variáveis do tipo teste0, teste1, teste2... e o resto é resto
  19.     alert(eval('teste' + i));
  20. }
  21. }
  22. bloCollapse();



(uff... o blogger é péssimo para isso)

Na verdade, eu sou um leigo completo em Javascript, talvez eu esteja chamando isso de variável variável injustamente.... neste caso, assim que eu esclarecer a confusão, venho aqui e corrijo!

A quem puder me judar, agradeço. Fica o memo.

Um comentário: