Ir para conteúdo

POWERED BY:

Arquivado

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

Katya_crisd

Problema adicionando eventos

Recommended Posts

Pessoal, meu problema é o seguinte, quando estou adicionando um evento a um botão, este evento chama uma função passando como parâmetro uma variável. Assim sendo, independentemente de qual botão eu clicar ele sempre vai mostrar a mesma mensagem, pois ele pega o último valor atribuído a variável.

 

Segue o código

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Adicionando evento</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
	function adicionarEvento(objeto,evento, funcao) {
		try {
			objeto.addEventListener(evento, funcao, true);
		} 
		catch (e) {
			try {
				objeto.attachEvent('on' + evento, funcao);
			} 
			catch (ee) {
				alert('Erro: ' + ee);
			}
		}
	}
	function mostrarValor(valor)
	{
		alert(valor);
	}
	function adiciona()
	{
		mensagem = "Mensagem 1";
		adicionarEvento(document.getElementById('m1'),'click', function() { mostrarValor(mensagem); } );
		
		mensagem = "Mensagem 2";
		adicionarEvento(document.getElementById('m2'),'click', function() { mostrarValor(mensagem); } );
	}
</script>
</head>

<body>
<p>
  <input name="adiconar" type="submit" id="adiconar" value="Adicionar eventos" onClick="adiciona();">
</p>
<p> 
  <input name="m1" type="submit" id="m1" value="Mensagem 1">
  <input name="m2" type="submit" id="m2" value="Mensagem 2">
</p>
</body>
</html>

Alguém tem uma idéia como faço para resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é pq você está sobreescrevendo a variavel mensagem. Se você fizer assim nao terá problema:

 

function adiciona()
	{
		adicionarEvento(document.getElementById('m1'),'click', function() { mostrarValor("mensagem1"); } );
		adicionarEvento(document.getElementById('m2'),'click', function() { mostrarValor("mensagem2"); } );
	}

nao entendi pq você cria uma funcao pra dar o alert, nao te serviria assim?

 

adicionarEvento(document.getElementById('m1'),'click', function() { alert("mensagem1"); } );
adicionarEvento(document.getElementById('m2'),'click', function() { alert("mensagem2"); } );

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.