Visualizzazione dei risultati da 1 a 6 su 6

Discussione: onmouse event...this

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    15

    onmouse event...this

    salve ragazzi, ho cercato qualcosa in merito nel forum ma non ho trovatao niente di specifico.
    vi spiego il mio problema:

    <p class="p_normal" onmouseover="this.className='p_hover';">

    questa simpaticissima istruzione funziona alla perfezione...ok

    il problema sorge quando voglio fare qualcosa di diverso, cioè dichiarare e implementare la funzione in un file incluso nella pagina.

    <p class="p_normal" onmouseover="simpaticissimo()">

    file incluso:

    function simpaticissimo()
    {
    this.className='p_hover';
    }

    perchè non funziona? dove sbaglio?

    vi ringrazio per la cortese attenzione

    GMB
    From teoprimo

  2. #2
    perché lo scope di una funzione è window non l'elemento che la chiama:

    quando fai
    <p class="p_normal" onmouseover="this.className='p_hover';">

    sostituisci la funzione onmouseover del p (che di default è null) con la riga che gli passi, in questo caso, lo scope (ovvero l'ambiente in cui il runtime di JS viene eseguito) è l'Element corrispondente a p, ma quando definisci una funzione con function qualcosa() sposti lo scope a window che è l'elemento della pagina, a tutti gli effetti, il tuo metodo cerca di associare la classe 'p_hover' a l'intera pagina che non ha quella proprietà (per questo non vedi niente).

    Per lavorare su P devi passargli l'elemento come parametro della funzione:

    <p class="p_normal" onmouseover="simpaticissimo(this)"> qui si che this si riferisce a P

    function simpaticissimo(elem)
    {
    elem.className='p_hover';
    }

    Ora in elem ci sarà il valore passato alla chiamata della funzione (P quindi).

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: onmouse event...this

    Originariamente inviato da teoprimo
    salve ragazzi, ho cercato qualcosa in merito nel forum ma non ho trovatao niente di specifico.
    vi spiego il mio problema:

    <p class="p_normal" onmouseover="this.className='p_hover';">


    <p class="p_normal" onmouseover="simpaticissimo(this)">

    file incluso:

    function simpaticissimo(v)
    {
    v.className='p_hover';
    }
    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    15
    veramente molto gentili!

    a questo punto ne approfitto!

    il p dovrà avere tre eventi. onmouseover, onmouseout, onclick.
    posso evitare di scrivere tutta la sintassi nell'html? o si complica parecchio il codice js?

    <p class="p_normal" onmouseover="simpaticissimo(this)" onmouseout="prova(this)" onclick="prova2()"></p>

    in più posso far si che la funzione prova2() si prenda il collegamento ipertestuale presente nel tag a?

    vi ringrazio ancora
    From teoprimo

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    codice:
    function prova2(v)
    {
        //v è l'oggetto p passato
        
        //cerco gli elementi <a>
        var elementi = v.getElementsByTagName("a");
        var n = elementi.length;
        if(n > 0)
        {
            //prendo il 1° elemento
            var a = elementi[0];
            var href = a.href; alert(href);
            var testo = a.innerHTML; alert(testo);
        }
        //restituisco false per non far partire il link
        return false;
    }
    Pietro

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    15
    ho studiato c++ per l'università ma debbo dire che, rispetto ai miei interessi, è molto più interessante js.
    Senza grandi pretese mi cerco una bella guida, prendendo spunto dal thread dedicato(che sicuramente esiste). Se avete qualche consiglio (mastico anche l'inglese) è ben accetto!

    Grazie per la piena disponibilità!
    From teoprimo

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.