vini_loock Postado Setembro 5, 2010 Denunciar Share Postado Setembro 5, 2010 Eu estou fazendo uma função no javascript, mas não to conseguindo usar o thisO que está acontecendo? Eu preciso alterar o src de uma imagem, essa função vai ser chamada no onClick.Meu html e js:function mostrar(){ ... this.src= 'img/setaBaixo.png'; ... } <img src="img/setaBaixoVerde.png" width="15" height="15" border="0" title="Expandir" onclick="mostrar('clima');" />Se eu colocar o comando this inline, ele funciona, mas seria quase impossivel fazer isso.Agora vem a pergunta...Tem como usar o comando this dentro de uma function? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Setembro 5, 2010 Denunciar Share Postado Setembro 5, 2010 Para que a função seja passado no escopo correto você teria que remover os parênteses:onclick="mostrar" Mas, além de não funcionar no Firefox (pelo menos na versão que uso), você não teria como passar o parâmetro. O que você pode fazer é utilizar o método call da função: onclick="mostrar.call(this,argumento1,argumento2,argumento3,...)" Basicamente, o primeiro argumento é o escopo da função (isto é, o objeto a que a função tem acesso quando chama o this) e os demais são os parâmetros que devem ser passados. Segue um exemplo: <html> <head> <title>Test</title> <script type="text/javascript"> function funcao1() { alert(this.innerHTML) } onload = function () { funcao1.call(document.body) //mostra o conteúdo do elemento <body> funcao1.call(document.getElementById("elemento1")) //mostra o conteúdo do elemento cujo id é "elemento1" } </script> </head> <body> <div id="elemento1"> Elemento 1 </div> <div id="elemento2"> Elemento 2 </div> </body> </html> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vini_loock Postado Setembro 5, 2010 Autor Denunciar Share Postado Setembro 5, 2010 Vix.Jonathan.Você me deixou confuso.Tem como fazer um exemplo em cima do meu objetivo?Tenho um menu, (ul li a) e antes do menu tenho um titulo(h1), nesse titulo tenho uma seta para baixo(img), quando eu clico na imagen, ele expande o menu(ul li a) e troca o src da imagem.É basicamente issoVlw.Vinicius. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Setembro 5, 2010 Denunciar Share Postado Setembro 5, 2010 Basicamente, ao invés de:onclick="funcao(parametro1,parametro2)" Você utilizaria: onclick="funcao.call(this,parametro1,parametro2)"O código acima foi só para exemplificar o uso do método call. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vini_loock Postado Setembro 5, 2010 Autor Denunciar Share Postado Setembro 5, 2010 (editado) Hm..Entendi.Funcionou certinho.Resolvido.VlwFicou assim:Jsfunction mostra(div){ var display = document.getElementById(div).style.display; if(display != 'none'){ display = document.getElementById(div).style.display = 'none'; }else{ display = document.getElementById(div).style.display = 'block'; } if(display != 'none'){ this.src = 'img/setaBaixoVerde.png'; }else{ this.src = 'img/setaDireitaVerde.png'; } } HTMLonclick="mostra.call(this, 'clima'); Editado Setembro 5, 2010 por vini_loock Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Setembro 5, 2010 Denunciar Share Postado Setembro 5, 2010 De nada, qualquer coisa é só postar!Obs.:O tópico foi marcado como Resolvido. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
vini_loock
Eu estou fazendo uma função no javascript, mas não to conseguindo usar o this
O que está acontecendo? Eu preciso alterar o src de uma imagem, essa função vai ser chamada no onClick.
Meu html e js:
Se eu colocar o comando this inline, ele funciona, mas seria quase impossivel fazer isso.
Agora vem a pergunta...
Tem como usar o comando this dentro de uma function?
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.