Ir para conteúdo
Fórum Script Brasil
  • 0

innerHTML e referência...


Guest --Tito --

Pergunta

Guest --Tito --

Pessoal,

tenho uma dúvida, que na verdade é meio uma viagem assim bem grande. Eu insiro dentro de uma célula uma imagem ("<img src='..' />", e tudo isso é feito via DOM, innerHTML e tals. Mas o seguinte, eu tenho um evento dentro da minha tag de img, que fica assim "<img onclick='java script: funcao();..../>". Nesta minha função eu gostaria de passar o próprio objeto img, ou seja, utilizaria o "this". Mas como fazer isso se esta atribuindo via innerHTML???????

EiISSS A QUestTão!

Se souberem me falem...

Abraços

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Guest --Tito --

O código ta maior, mas seria mais ou menos assim...:

.
.
.
table = document.getElementById('tableGrid');
tr = table.insertRow();

td = tr.insertCell();
td.innerHTML = '<img alt="Remover" id="imgExcluir" onclick="java script: removerItem(' + [b]this[/b] + ')" src="./images/imgIcoRemover.gif" title="Clique aqui para remover." />'
.
.
.

Na parte do this, por estar tratando com texto, eu estou percebendo que não consigo coloca-lo ali como referência ao meu img...

Bom, não sei se consegui explicar direito, mas é por ae...

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Tiot!

Eu particularmente prefiro assim:

// cria o objeto img
img = document.createElement('IMG');
// seta os atributos de img
img.id = "imgExcluir";
img.src = "./images/imgIcoRemover.gif";
img.title = "Clique aqui para remover.";
img.alt = "Remover"; // nunca tentei atribuir alt, mas creio que seja assim!!!
// cria uma ação em onclick
img.addEventListener("click",function(){eval(removerItem + "(this)")},true);
//coloca dentro do td
td.appendChild(img);

Ou utilizando o innerHTML, utilize apenas a parte do eval!!!!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Tito --

É melhor sim, é que eu estava tendo problemas com o uso dos eventos dessa forma que você postou, dai resolvi fazer tudo no innerHTML pra ir mais rapido.

Eu não entendi o porque do uso do eval (function(){eval(removerItem + "(this)")}), removerItem era pra ser uma função, porque se usa eval concatenando a função com o objeto?

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa!!

Desculpa a demora pra responder.... mas tá osso aqui no trampo!!!!

O eval serve para pegar uma string e executá-la como uma função, variável, constante, etc.

Neste caso, se você não utilizar a concatenação + eval, cai em duas situações distintas:

- Se passar o this direto, ele vai referenciar a própria função duarnte a montagem do objeto e não o objeto imagem que vai disparar o evento "click".

- Se passar o "this" como string, ele vai enviar um parâmetro string com o valor "this".

Não sei se consegui ser claro ou se acabei enrolando mais.... rs!

Caso alguém possua uma explicação mais simples, plx!!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...