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

(Resolvido) this... só funciona inline?


vini_loock

Pergunta

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:

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?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

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>

Link para o comentário
Compartilhar em outros sites

  • 0

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 isso

Vlw.

Vinicius.

Link para o comentário
Compartilhar em outros sites

  • 0

Hm..

Entendi.

Funcionou certinho.

Resolvido.

Vlw

Ficou assim:

Js

function 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';
        }
    }
HTML
onclick="mostra.call(this, 'clima');

Editado por vini_loock
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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...