Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    128

    Script che non funziona su IE 6

    Ciao ragazzi,

    ho un problema con questo scriptino che ho sviluppato.
    Su Firefox e Safari tutto ok, fa quello che deve fare, mentre su IE6e7 non funziona.

    function activeMenu (vocemenu, temp_voiceNumber) {
    voiceNumber = temp_voiceNumber-1;
    // Primo livello
    var liv1 = document.getElementsByClassName("m_"+vocemenu);
    liv1[0].firstChild.style.backgroundPosition="left bottom";
    // Secondo livello
    if (isFinite(voiceNumber)) {
    var liv2_temp = liv1[0].getElementsByClassName("drawer");
    var liv2_temp_2 = liv2_temp[0].getElementsByTagName("a");
    var liv2 = liv2_temp_2[voiceNumber].style.color="#ffffff";
    }
    }

    come vedete ho usato solo metodi e proprietà del DOM che dovrebbero essere tutti cross-browser, quindi non capisco dove possa stare il problema...

    P.S. Questo è praticamente il mio primmo script in js quindi siate clementi, so che non è un gran che...

    Grazie mille :-)

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    document.getElementsByClassName non è implementato in IE6
    quindi questa riga

    codice:
    var liv1 = document.getElementsByClassName("m_"+vocemenu);
    non funziona
    sostituiscila con un ciclo che cerca, tra tutti gli elementi, solo quelli che hanno classe "m_"+vocemenu
    e liv1 sarà un array che conterrà solo quegli elementi.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    128
    Ciao fcaldera,

    grazie per la risposta ma non ho ben capito. Per cercare gli elementi con classe "m_"+vocemenu come faccio se non con getElementsBtTagName?

    Inoltre ti chiedo: avevo sviluppato anche una versione alternativa che funzionava solo tramite getElementById ma anche con quello avevo problemi su IE...

    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    128
    forse con className?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    128
    anzi, meglio getAttribute(); no?

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da jesuslives
    Ciao fcaldera,

    grazie per la risposta ma non ho ben capito. Per cercare gli elementi con classe "m_"+vocemenu come faccio se non con getElementsBtTagName?

    Grazie

    difatti dovresti usare proprio getElementsByTagName e non getElementsByClassName
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    128
    Ho fatto così:

    function activeMenu (temp_vocemenu, temp_voiceNumber) {
    vocemenu = "m_" + temp_vocemenu;
    voiceNumber = temp_voiceNumber-1;
    // Primo livello
    var liv1_li = document.getElementsByTagName("li");
    for (i=0; i<liv1_li.length; i++) {
    liv1_attribute = liv1_li[i].getAttribute("class");
    if (liv1_attribute === vocemenu) {
    liv1_li[i].firstChild.style.backgroundPosition = "left bottom";
    }
    }
    }

    ma ancora non funziona su IE...

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    128
    Originariamente inviato da fcaldera
    difatti dovresti usare proprio getElementsByTagName e non getElementsByClassName
    Sì, scusa, volevo dire ClassName...

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    128
    non riesco a capire proprio cosa non va... ho provato anche a sostituire l'operatore === con == ma niente...

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    codice:
    function activeMenu (vocemenu, temp_voiceNumber) {
    voiceNumber = temp_voiceNumber-1;
    // Primo livello
    
    
    // var liv1 = document.getElementsByClassName("m_"+vocemenu);
    
    // diventa equivalentemente così
    liv1 = [];
    var els = document.getElementsByTagName("*");
    for (i=0; i<els.length; i++) {
       if (els[i].className.indexOf("m_"+vocemenu) > -1) 
         liv1[liv1.length] = els[i]; 
    };
    // a questo punto liv1 contiene i soli elementi che hanno quella classe
    
    
    liv1[0].firstChild.style.backgroundPosition="left bottom";
    // Secondo livello
    if (isFinite(voiceNumber)) {
    var liv2_temp = liv1[0].getElementsByClassName("drawer");
    var liv2_temp_2 = liv2_temp[0].getElementsByTagName("a");
    var liv2 = liv2_temp_2[voiceNumber].style.color="#ffffff";
    }
    }
    provalo...
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.