Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ar0n

Pegar id elemento javascript

Recommended Posts

Olá, estou com o problema para pegar o id de um elemento no meu HTML o id está lá(tenho certeza), mas quando faço o "this.id" recebo como resposta "undefined". Achei uma solução onde o cara pega usando somente "id" mas o javascript está inserido no elemento html.

 

Preciso pegar o id de um elemento que está no meu arquivo "index.html" para dentro do meu arquivo "script.js". Como posso fazer isso?

 

Aqui a solução que eu citei acima: http://www.webdeveloper.com/forum/showthread.php?24823-this-id-returns-undefined-WHY

 

OBS: Vi alguns exemplos com JQuery, mas preciso fazer isso sem usar JQuery já que é um trabalho da faculdade, onde foi proibido o uso de ferramentas como essa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim "pegar", em qual instante ? onde está o elemento ?

 

this.id de quem ? quem é this ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

William aqui vai o meu caso:

 

Primeiro eu gero a minha tabela Dinamicamente.

function criar_tabela(numLinhas, numColunas, tabela){

	for (var i = 0; i < numLinhas; i++) {

		var ultima	 = tabela.rows.length;
		var linha	 = document.createElement("tr");	
		linha.setAttribute("id","line"+ultima);

		for (var j = 0; j < numColunas; j++) {
			
			var celula	 = document.createElement("td");
			celula.setAttribute("id", ultima+""+j);			
			celula.addEventListener("click", function(){				
				atirar();
			});			
						
			linha.appendChild(celula);		

		};//for - j	

		tabela.appendChild(linha);	

	};//for - i
	return false;
}//function - criar_tabela 

Após gerar minha tabela eu desejo pegar o "id" de um elemento "td", com essa cara:

<td id="00"></td>

OBS: Eu adiciono um evento acima para chamar a função atirar(), mesmo ele não aparecendo no html o evento está presente, pois posso visualiza-lo ao inspecionar o código no navegador e o mesmo é disparado ao eu clicar no "td".

 

evento.png

 

Ai quando chamo a função abaixo eu é chamada com o evento "click":

function atirar(){
  alert(this.id);
}

Acabo recebendo "undefined" como saída.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, segue para vc entender:

 

opcao errada
<div id="a2" onclick="teste2()">aa</div>
<script>
function teste2(){
  alert(this)//[object Window]
}
</script>


<hr>
primeira opcao
<div id="a0" onclick="teste0(this)">aa</div>
<script>
function teste0(el){
  alert(el.id);
}
</script>



<hr>
segunda opcao
<div id="a1">aa</div>
<script>
document.getElementById('a1').addEventListener('click', function(){
  alert(this.id);
});
</script>
viu quem é this naquele contexto ? Window, ou seja, o root objeto global do navegador. E como o teu Window não tem ID, te retornava undefined.

Embaixo deixei duas opções "que funcionam".

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.