Oldal: 1 / 3 123 UtolsóUtolsó
Eredmény: 1 - 10 (21) összesen

Téma: SetTimeout - Javascript kérdés

  1. #1
    Új tag
    Csatlakozott
    10-10-20
    Hozzászólás
    15
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás SetTimeout - Javascript kérdés

    Sziasztok!

    A cél az volt, hogy ha onMousOut van, akkor késleltetéssel eltűnjön a div.
    A kód, amire azt hittem, h működni fog, a következőképpen nézett ki (illetve ezerféleképpen kipróbáltam, de nem akart működni és ez a legegyszerűbb, amivel szemléltetni tudom):

    hívás:
    Kód:
    <div id="subidubi" onmouseout="hide('subidubi')">
    hide:
    Kód:
    function hide ( divId ) {
    setTimeout ( "document.getElementById( divId ).stlye.display = 'none'", 1250 );
    }
    Természetesen utánanéztem a dokumentációnak és az az érzésem, hogy alapvetően félreértelmezem a setTimeout működési mechanizmusát.

    Kérem, ha valaki érti, hogy hogy is működik ez valójában, az fejtse ki bőven!
    Az általános problémám az, hogy késleltést tartalmazó függvényeket, amik a késleltetéssel kapcsolatos paramétereket tudnak fogadni (esetünkben 'divId'), azokat hogyan lehet szépen (és működőképesen) legyártani?

    Köszönöm a figyelmet!



  2. #2
    Bölcs benedictus logója
    Csatlakozott
    10-04-23
    Hozzászólás
    1.574
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Alapbeállítás re: SetTimeout - Javascript kérdés

    .style.visibility='hidden' -nel nem jó?

    (a saját verziódban a tyle is el van írva, gondolom csak itt )

    hide függvénynevet is vmi kevésbé foglalt-gyanúsra váltanám...


    Utoljára módosítva: benedictus által : 2010-10-20 18:25
    Linkeld.be Linkmegosztó
    Indexeld.be - Linkgyűjtemény prémium funkciókkal!

  3. #3
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: SetTimeout - Javascript kérdés

    Idézet Burnee;199697

    hívás:
    [CODE
    eredeti hozzászólása
    <div id="subidubi" onmouseout="hide('subidubi')">[/CODE]

    hide:
    Kód:
    function hide ( divId ) {
    setTimeout ( "document.getElementById( divId ).stlye.display = 'none'", 1250 );
    }
    Az általános problémám az, hogy késleltést tartalmazó függvényeket, amik a késleltetéssel kapcsolatos paramétereket tudnak fogadni (esetünkben 'divId'), azokat hogyan lehet szépen (és működőképesen) legyártani?

    Köszönöm a figyelmet!
    Kód:
    function hide ( divId ) {
    setTimeout ( "document.getElementById(' " + divId " + " ').stlye.display = 'none'", 1250 );
    }
    a setTimeout stringként kapja a függvényhívást, ezért a divId az nem az aminek te akartad.

    egyébként ajánlom javascript keretrendszerekkel való ismerkedést, mert sokszor megkönnyítik a dolgokat.


    If debugging is the process of removing software bugs, then programming must be the process of putting them in.
    Ruby blog
    Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.
    Respect all, fear none

  4. #4
    Bölcs benedictus logója
    Csatlakozott
    10-04-23
    Hozzászólás
    1.574
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Alapbeállítás re: SetTimeout - Javascript kérdés

    a hiba:
    setTimeout ( document.getElementById( divId ).style.display = 'none', 1250 );

    nem kellenek az idézőjelek:
    setTimeout ( "document.getElementById( divId ).style.display = 'none'", 1250 );



  5. #5
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: SetTimeout - Javascript kérdés

    Idézet benedictus eredeti hozzászólása Hozzászólás megtekintése
    a hiba:
    setTimeout ( document.getElementById( divId ).stlye.display = 'none', 1250 );

    nem kellenek az idézőjelek:
    setTimeout ( "document.getElementById( divId ).stlye.display = 'none'", 1250 );
    ezt ki is próbáltad? mert teljesen hibás.



  6. #6
    Új tag
    Csatlakozott
    10-10-20
    Hozzászólás
    15
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: SetTimeout - Javascript kérdés

    Szia!

    A setTimeout-nál a code paramétert stringként kapja a függvény (ahogy azt Geri is írta), tehát kellenek az idézőjelek.



  7. #7
    Új tag
    Csatlakozott
    10-10-20
    Hozzászólás
    15
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: SetTimeout - Javascript kérdés

    Köszi Geri, valószínűleg megoldottad a problémámat.
    Bár ha minden igaz, lemaradt nálad is egy idézőjel.

    function hide ( divId ) {
    setTimeout ( "document.getElementById(' " + " divId " + " ').stlye.display = 'none'", 1250 );
    }



  8. #8
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: SetTimeout - Javascript kérdés

    Idézet Burnee eredeti hozzászólása Hozzászólás megtekintése
    Köszi Geri, valószínűleg megoldottad a problémámat.
    Bár ha minden igaz, lemaradt nálad is egy idézőjel.

    function hide ( divId ) {
    setTimeout ( "document.getElementById(' " + " divId " + " ').stlye.display = 'none'", 1250 );
    }
    az előfordul. ezért jobb egy IDE-vel szerkeszeteni, mert ott jobban látszik az ilyen.



  9. #9
    Bölcs benedictus logója
    Csatlakozott
    10-04-23
    Hozzászólás
    1.574
    Begyűjtött 2 köszönetet
    2 hozzászólásával

    Alapbeállítás re: SetTimeout - Javascript kérdés

    Idézet Geri eredeti hozzászólása Hozzászólás megtekintése
    ezt ki is próbáltad? mert teljesen hibás.
    igazad van, hibás, de lefutni lefut, majdnem jól. Kipróbáltam, eltüntette a div-et, csak a settimeout időt figylemen kivül hagyva.

    jogosan, az értékadást végrehajtotta és utána lefuttatta a none parancsot settimeouttal.



  10. #10
    Új tag
    Csatlakozott
    09-12-24
    Hozzászólás
    32
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: SetTimeout - Javascript kérdés

    Néha én is túlbonyolítom a dolgokat.. Most szerintem ti is ezt csináltátok

    Amiket észrevettem:
    - a getElement-ek mindig egy element-et keresnek. Ezt itt egyszerűen helyettesíthetitek egy this -el (ami arra az elementre vonatkozik ahol használod - így nem kell 'kikeresni')
    - a setTimeout egy függvényt és egy számot vár vesszővel elválasztva: setTimeout(fuggveny,1000) -> ezért vagy írsz egy külön függvényt az eltüntetésnek, és azt hívod a setTimeout-ból, vagy megadod névtelen függvényként:
    function(){ var blabla='ez egy névtelen függvény'; }
    Ezeket majd a kódból megérted, ha itt nem.

    Ja, és sokszor írtatok 'style.display' helyett 'stlye.display'

    Szóval:

    Kód:
    <script>
    function hide(element) {
    setTimeout ( function(){ element.style.display = 'none'; }, 3000);
    } 
    </script>
    
    <div onmouseout="hide(this)" style="width:50px;">teszt</div>




Oldal: 1 / 3 123 UtolsóUtolsó

A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •