Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    modifica tramite JS degli attributi :hover di un link

    Ciao.
    Ho bisogno di modificare dinamicamente il DOM di una pagina, in particolare le pseudoclassi di un link e non so come fare.
    Conosco bene la procedura documento.elemento.style.proprietà = valore, ma se si parla di una pseudoclasse tipo :hover per un link?
    Qualcuno sa come si può intervenire in questo caso?

    Grazie.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    documento.getElementById('tuo-id-univoco-oggetto').style.hover = 'codice-colore';
    cosi hai provato?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Be allora: premesso che la modifica di stile si applica all'elemento e quindi semmai una modifica alla classe (se possibile non ne sono sicuro) non avrebbe senso, comunque non ha effetto, ne firebug mi da errore.

  4. #4
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Ho trovata una risposta su Stackoverflow
    http://stackoverflow.com/questions/3...rom-javascript ora la provo

  5. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Sembrava facile!
    Se ho ben compreso ciò che si vuole fare su stack over flow, allora non mi serve.
    Però, grazie a firebug sono riuscito a comprendere cosa cercare.
    Premesso che la parte in esame non è su foglio di stile esterno ma integrato nell'html della pagina, ho cercato tramite getElementsByTagName l'elemento <style> nella pagina.
    codice:
    styles = document.getElementByTagName('style')[0]
    attenzione perché gli elementi sono comunque array e visto che il mio era il primo dei due (l'altro è un settagio particolare per IE ) quindi è lo zero.
    Ebbene funziona, lo trova, ma <style> non è un elemento come gli altri, no è un array ed ogni elemento dell'array corrisponde ad una definizione di stile. Si può anche ciclare alla ricerca di una particolare, nel mio caso ad esempio:
    codice:
    for (var i = 0; i < styles.length; i++) {
       if (styles.sheet.cssRules[i].indexOf('#demomenu a:hover')) {
          alert('Trovata!!! ' + i);
       }
    }
    Ora so che styles.sheet.cssRules[5] corrisponde a #demomenu a:hover {color: yellow;} ma come faccio a modificarla?
    Non solo, ma sheet.cssRules sono si standard del W3C ma funzionano lo stesso su IE e Safari? (ancora non lo so!).

    Ebbene sappiatelo ce l'ho fatta
    Ecco come: quando trovo styles.sheet.cssRules[5]; è come se trovassi un qualsiasi elemento nella pagina, per capirci è come se scrivessi document.getElementsByTagName('a'); e poi vi applico lo stile che voglio con il solito metodo: ...stile.color = 'red';, quindi faccio così:
    codice:
    styles.style.color = '#aaa';
    per avere l'hover in grigetto, e funziona!!!
    E per IE? Non ne ho idea almeno per ora non lo so, l'ho provato su Chrome e funziona e non l'ho provato su Safari.

    codice:
    styles = document.getElementByTagName('style')[0];
    for (var i = 0; i < styles.length; i++) {
          if (styles.sheet.cssRules[i].indexOf('#demomenu a:hover')) {
             styles.style.color = '#aaaaaa';
          }
    }

  6. #6
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Scusate nella funzione di cui sopra c'è un errore di sbaglio
    Eccola corretta.
    codice:
    function hovering (coloreHex) {
    var styles = document.getElementsByTagName('style')[0].sheet.cssRules;
    for (var i = 0; i < styles.length; i++) {
    	if (styles[i].cssText.indexOf('#demomenu a:hover') != -1) {
    		if (document.getElementById('checkHover').checked) {	//	Se checked!
    			styles[i].style.color = '#' + coloreHex;
    		}
    	}
    }
    };    //    fine hovering()
    Ovvio si può modificare per inserire qualsiasi altro valore o stile.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.