1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. Informação: Pela 0:30 desta Sexta-feira (9 de Dezembro, 23:30 de Quinta-feira nos Açores) o Fórum e restantes sites da ZWAME vão estar offline para manutenção durante cerca de 1h30.
    Se necessário faremos actualizações via Twitter e Facebook.
    Remover anúncio

javascript: função simples

Discussão em 'Web Development' iniciada por undeaddddd, 17 de Junho de 2009. (Respostas: 9; Visualizações: 976)

  1. function t(n) {
    imgs = document.getElementById('h').getElementsByTagName('img');
    for(i = 0; i < imgs.length; i++) {
    document[imgs.name].src = "images/t/" + imgs.name + ".png";
    document[imgs.name].onmouseover = function() { document[imgs.name].src = "images/t/" + imgs.name + "_h.png"; }
    document[imgs.name].onmouseout = function() { document[imgs.name].src = "images/t/" + imgs.name + ".png"; }
    }
    document[n].src = "images/t/" + n + "_h.png";
    document[n].onmouseover = function() {}
    document[n].onmouseout = function() {}
    }

    -----
    Do tipo, alguém me sabe indicar o que está errado no código acima? No html tenho um div com id="h" em que dispõe de 4 imagens, em que cada uma delas tem no onlick uma chamada para a função t, enviando para a mesma o valor da propriedade name da imagem em questão, clicada; as mesmas têm efeitos onmouseover e onmouseout. A função foi feita com o intuito de sempre que clique numa das imagens, que é tipo uma selecção de menús e aparecimento de conteúdo, ela, através do for, faz um reset aos links desse get das 4 imagens, e em baixo mete em hover apenas a clicada, visto que manda o nome da imagem pelo n. Está tudo a funcionar como pretendido menos ao clicarmos, porque fica hovered a imagem, mas as outras deixam de ter efeito onmouseover e onmouseout, o que me levou a acrescentar os mesmos no ciclo for, mas sem sucesso.

    Agradecia uma mãozinha, sff.. sou novo em javascript :$
     
    Última edição: 17 de Junho de 2009
  2. OldMan

    OldMan Power Member

    www.jquery.com
     
  3. jquery no, thanks :p só uso um script ou outro de lá.. tou fazendo este site todo de raiz, por mim.. daí a não ter recorrido a scripts pré-feitos ou já mesmo feitos :/ só gostava de saber o que está mal aí.
     
  4. OldMan

    OldMan Power Member

    Mete isso online para se perceber melhor o que está a acontecer.
     
  5. OldMan

    OldMan Power Member

    Estive a tentar descobrir maneira de fazer o que querias mas não cheguei lá.

    Eu tentaria outra lógica, vê se consegues percebes:

    mouseover
    IF alt != 'clicked'
    > src=imagem_h.png
    > alt='hover'
    mouseout
    IF alt != 'clicked'
    > src=imagem.png
    > alt=''
    click
    > src=imagem_h.png
    > alt='clicked'

    Ou seja, usavas o atributo alt (ou outro qualquer) para guardar o estado desse menu que ias verificar sempre que passasses o rato por cima. Acho que resultava, mas não experimentei.
     
  6. hmm, percebi.. mas o que queria era evitar tanto trabalho, simplificar tudo numa função.. não percebo mesmo o que está mal aqui, tá tudo certo.. o único que falha é:

    document[imgs.name].onmouseover = function() { document[imgs.name].src = "images/t/" + imgs.name + "_h.png"; }
    document[imgs.name].onmouseout = function() { document[imgs.name].src = "images/t/" + imgs.name + ".png"; }

    ou essas mesmas propriedades, nas respectivas imagens.

    :/
     
  7. feito :p

    function t(n) {
    imgs = document.getElementById("h").getElementsByTagName("img");
    for(i = 0; i < imgs.length; i++) {
    document[imgs.name].src = "images/t/" + imgs.name + ".png";
    document[imgs.name].removeAttribute("onmouseover");
    document[imgs.name].removeAttribute("onmouseout");
    document[imgs.name].setAttribute("onmouseover", "h('" + imgs.name + "');");
    document[imgs.name].setAttribute("onmouseout", "o('" + imgs.name + "');");
    }
    document[n].src = "images/t/" + n + "_h.png";
    document[n].onmouseover = function() {}
    document[n].onmouseout = function() {}
    }

    // resolvi, (:
     
  8. p3dro

    p3dro Power Member




    Aquele código inicial dava-te erro pois não conseguías aceder ao imgs.name dentro da função, terias de adoptar outra forma para passar essa informação, por ex. desta maneira:


    Código:
    for (var i = 0, count = imgs.length; i < count; i++) {
      var img=imgs[i].name;
    
      document[img].src = "images/t/" + img + ".png";
    
      document[imgs[i].name].onmouseover = function(pic){
        return function() { document[pic].src = "images/t/" + pic + "_h.png"; }
      }(img);
    
      document[img].onmouseout = function(pic) {
        return function() { document[pic].src = "images/t/" + pic + ".png"; }
      }(img);
    }
     
  9. mas pedro, isso funcionava, que testei com alert e tudo.. o problema era o .onmouseover e .onmouseout que não me ficavam activos e ao clicar numa das imagens, desactivava esse efeito nelas todas.. mesmo com eles na tag img, no html.. talvez faltasse um return, como tens aí.. anyway, javascript ainda não é bem para mim, só coisinhas básicas, ainda :p mas thanks aí (:
     

Partilhar esta Página