Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Identificare un oggetto in un frame per cambiarne il colore

    Buongiorno a tutti.
    Ho una pagina suddivisa in due frame; il primo, statico (con funzione di banner), si chiama 'superiore'. La pagina che viene caricata contiene anche dei link per aprire altre pagine nel frame centrale, che si chiama 'main'. Per ognuno di quesi link ho scritto la seguente funzione, attivata all'evento 'onclick':

    function highlight(hl)
    {
    window.open('header.htm','superiore','');
    hl.style.color='#ffffff';
    }

    la funzione e` richiamata dalle tag:

    Home
    Foto
    Link

    ...eccetera. L'idea e` che ogni collegamento cliccato dovrebbe restare "evidenziato" in bianco (mentre il suo colore di default e` #cccccc) finche` non se ne clicca un'altro. Al click di un altro link, la funzione ricarica la pagina del frame 'superiore' (per "resettare" tutti i colori dei link su #cccccc) e poi dovrebbe andare ad attribuire style.color='#ffffff' all'oggetto passato come parametro, presente in 'header.htm' a sua volta contenuto nel frame 'superiore'. Ma mi sa che la semplice linea hl.style.color='#ffffff' non basti! Cosa bisogna inserire prima per individuare con esattezza l'oggetto a cui vorrei cambiare colore?
    Grazie anticipatamente a chiunque voglia darmi una mano!

    Andrea
    Don't know what I want, but I know how to get it...

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ma se ricarichi la pagina che contiene lo script questo non esiste piu'... come tutti gli oggetti che conteneva, ed il fatto che venga ricaricata la stessa pagina ovviamente non ha importanza.

    Chiaro che con il tuo metodo non risolvi... non puoi "semplicemente" ricaricare la pagina, devi "azzerare" con uno script tutti i link contenuti nella pagina senza ricaricarla.

    codice:
    <script>
    function highlight(hl) 
    { 
    aa = document.getElementsByTagName("a");
    for (var i=0;i<aa.length;i++) {
      aa[i].style.color="#cccccc";
    }
    hl.style.color='#ffffff'; 
    } 
    </script>
    <body>
    Home 
    Foto 
    Link 
    </body>
    ciao

    ps: perche' non usi un semplice CSS: ?

    <style>
    a {color: #cccccc;}
    a:active {color: #ffffff;}
    </style>
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Grazie Br1!
    L'idea del CSS è ottima (com'è possibile che non mi sia venuta prima?), ma ha uno svantaggio! Nel frame 'superiore' ci sono altri link (uno è il 'mailto' al mio indirizzo, gli altri due rispettivamente 'aggiungi ai preferiti' e 'imposta come homepage'), quindi cliccandoli diventano LORO gli active link e si 'spegne' (il colore torna a #cccccc) uno di quei link tipo home, foto, ecc. nonostante la rispettiva pagina si ancora aperta nel frame 'main'. Io invece vorrei che il colore bianco durasse su di un link fin tanto che la pagina corrispondente è aperta in 'main'.
    L'altra soluzione che mi proponi è molto buona ma ha lo svantaggio di impostare il colore #cccccc "irrimediabilmente" sugli altri link; mi spiego meglio: al caricamento della pagina lo style di questi link è:

    a, a:visited
    {
    font-family:Arial;
    color:#CCCCCC;
    font-size:10pt;
    font-weight:bold;
    text-decoration:none;
    }

    a:hover, a:active
    {
    color:#FFFFFF;
    }

    Ossia, quando ci passo sopra il mouse, si "illuminano" di bianco per un attimo, poi tornano ad essere grigi. Al primo utilizzo della funzione che mi hai scritto tu, tuttavia, l'effetto di "illuminazione" di a:hover svanisce.
    Riassumendo:

    1) la mia pagina con i frame carica automaticamente la pagina "home.htm" nel frame 'main'; mi piacerebbe far sì che il link 'Home' fosse bianco già al caricamento;
    2) I link devono evidenziarsi di bianco con il passaggio del mouse; restare bianchi una volta cliccati finché non se ne clicca un altro (esclusi mailto, aggiungi a preferiti, imposta come homepage)

    Quindi mi chiedo se, in definitiva, è possibile che sia proprio LA PAGINA aperta nel 'main' che va a dire a 'header.htm' quale dei suoi link evidenziare di bianco!
    Una faccenda tipo:

    <body onload="highlight(home)">
    // Questa la chiamata alla funzione dalla pagina che si apre
    // nel main, ad esempio home.htm

    highlight(hl)
    {
    hl.style.color='#ffffff';
    }

    // E questa la funzione, che però deve comunicare
    // l'informazione ad un frame diverso da quello da cui è
    // stata chiamata!

    Ringrazio per l'attenzione, attendo impaziente gli sviluppi!!!

    Andrea
    Don't know what I want, but I know how to get it...

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Lascia perdere lo script... ed usa le classi con il CSS

    Per maggiori info ti sposto
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Ossia?
    A dire il vero quei link appartengo gia` ad una classe, la classe "menu"; infatti quel che ho scritto nel foglio di stile delle mie pagine e` in realta`:

    a.menu, a:visited.menu
    {
    font-family:Arial;
    color:#CCCCCC;
    font-size:10pt;
    font-weight:bold;
    text-decoration:none;
    }

    a:hover.menu, a:active.menu
    {
    color:#FFFFFF;
    }

    Ma resta il problema che qualsiasi altro link che viene cliccato nella mia pagina "rimuove" il colore bianco dal link attivo, senza contare che al caricamento del sito vorrei che si applicasse il colore bianco al link "Home" (siccome e` la pagina caricata in automatico nel frame 'main') mentre cosi` non viene colorato un tubo!
    Spero che qualcuno possa aiutarmi!!!

    Andrea
    P.S. Non voglio mollare neanche con gli script, beninteso!!!
    Don't know what I want, but I know how to get it...

  6. #6

    Risolto!

    Mi è venuta un'illuminazione!
    Bastava scrivere, nella funzione:

    function highlight(hl)
    {
    aa = document.getElementsByTagName("a");
    for (var i=0;i<aa.length;i++) {
    aa[i].style.color='';
    }
    hl.style.color='#ffffff';
    }

    per ottenere l'effetto desiderato.
    Ringrazio comunque tutti coloro che si sono interessati al mio problema.

    Andrea
    Don't know what I want, but I know how to get it...

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