JavaScript-afkorting voor if. Voorwaardelijke verklaring indien anders. Loop-exit-instructies worden afgebroken en voortgezet in JavaScript. Exitverklaring

JavaScript EventTarget-definitie en -toepassing

Met de JavaScript-methode addEventListener() van een EventTarget-object kunt u een gebeurtenishandler van een specifiek type voor een specifiek doel registreren.

Het doel kunnen objecten zijn zoals Element, Document, Window of andere objecten die gebeurtenissen ondersteunen, bijvoorbeeld een object zoals XMLHttpRequest, dat veel wordt gebruikt in asynchrone verzoeken AJAX(uit het Engels Asynchrone Javascript en XML- "asynchrone JavaScript en XML"), waardoor een specifieke pagina slechts een deel ervan kan bijwerken zonder de gebruikerservaring te verstoren.

Houd er rekening mee dat u de methode removeEventListener() kunt gebruiken om een ​​gebeurtenishandler te verwijderen die is gekoppeld met de methode addEventListener().

Browserondersteuning voor JavaScript-syntaxis: doel.addEventListener( type, luisteraar); doel.addEventListener( type, luisteraar, opties); doel.addEventListener( type, luisteraar, gebruikCapture); type- Snaar luisteraar- Functie opties- Voorwerp gebruikCapture- Booleaanse specificatie Document Object Model (DOM) Niveau 2 Gebeurtenissen Parameterwaarden Parameterbeschrijving
type Een tekenreekswaarde die het type gebeurtenis vertegenwoordigt waarnaar moet worden geluisterd (de waarde is hoofdlettergevoelig). Vereiste parameter.
luisteraar Een object dat een melding ontvangt wanneer een gebeurtenis van het opgegeven type plaatsvindt (een object dat de gebeurtenisinterface implementeert). Dit moet een object zijn dat de EventListener-interface implementeert, of een functie JavaScript. Vereiste parameter.
opties Een object dat de kenmerken van de gebeurtenislistener aangeeft (optioneel).
Beschikbare opties:
  • capture - Een Booleaanse waarde die bepaalt of gebeurtenissen van dit type naar een geregistreerde luisteraar (gebeurtenishandler) worden verzonden voordat ze naar een EventTarget worden verzonden DOM. Als u de Booleaanse waarde true doorgeeft, wordt de functie geregistreerd als een onderscheppingshandler en aangeroepen in de onderscheppingsfase ( vangfaseborrelende fase).
  • once - Een Booleaanse waarde die specificeert dat de gebeurtenishandler niet vaker dan één keer mag worden aangeroepen nadat deze is toegevoegd. Als de Booleaanse waarde true is, wordt de luisteraar automatisch verwijderd wanneer deze wordt aangeroepen.
  • passief - Een Booleaanse waarde die, indien true , aangeeft dat de door de luisteraar opgegeven functie nooit de standaardactie van de gebeurtenis zal annuleren (roep PreventDefault() preventieDefault() aan en de browser van de gebruiker zal deze negeren en een waarschuwing genereren wanneer hij dit doet in de console .
gebruikCapture Een Booleaanse waarde die bepaalt of gebeurtenissen van dit type naar een geregistreerde luisteraar (gebeurtenishandler) worden verzonden voordat ze naar een EventTarget eronder in de boom worden verzonden DOM.
Als u de Booleaanse waarde true doorgeeft, wordt de functie geregistreerd als een onderscheppingshandler en aangeroepen in de onderscheppingsfase ( vangfase). De standaardwaarde is false - de gebeurtenishandler wordt geactiveerd in de bubbelfase ( borrelende fase). Optionele parameter. gebruikCapture Parameter
was niet altijd optioneel, idealiter zou u het inschakelen voor bredere browserondersteuning.
  • 1
Gebruiksvoorbeeld Basisgebruik van de methode De JavaScript-methode addEventListener() gebruiken const ul = document .querySelector("ul "), // selecteer het eerste ul-element in het document listElements = document .querySelectorAll("li "); // selecteer alle li-elementen in het document const myFunc = function ( evenement const ul = document .querySelector("ul "), // selecteer het eerste ul-element in het document listElements = document .querySelectorAll("li "); // selecteer alle li-elementen in het document const myFunc = function () ( als ( const ul = document .querySelector("ul "), // selecteer het eerste ul-element in het document listElements = document .querySelectorAll("li "); // selecteer alle li-elementen in het document const myFunc = function (.target.tagName === "LI ") ( // als het object dat de gebeurtenis heeft verzonden een tagName-eigenschapswaarde heeft die gelijk is aan LI .target.style.color = "groen"; // stel vervolgens de tekstkleur in op groen )); ul .addEventListener("klik", mijnFunc ); // stel de klikgebeurtenishandler in op het ul-element lijstElementen .forEach(functie ( Elem .forEach(functie () ( // doorloop alle elementen van de verzameling

.addEventListener("dblclick", function ()( // stel elk li-element in op een dblclick-gebeurtenishandler this .style.color = "#000 "; // stel de tekstkleur in op zwart ) ) ) )

    In dit voorbeeld hebben we een lijst met opsommingstekens geplaatst ( ), waarin we hebben geplaatst vijf
  • lijstelementen ( ). Met behulp van de querySelector() -methode die we hebben geselecteerd Eerst
      element
    • in het document en met behulp van de methode querySelectorAll() alle elementen

      in het document en initialiseerde de variabelen met deze waarden.

        Met behulp van de methode addEventListener() stellen we het element in een "klik"-gebeurtenishandler (links klikken op een element) die, met behulp van de target-eigenschap van het Event-object, de tagnaam van het element controleert, en als deze waarde overeenkomt met de "LI"-waarde, verandert de tekstkleurstijl in wanneer geactiveerd. Houd er rekening mee dat het vaak handiger is om één handler per bovenliggend element te installeren, in plaats van voor elk element afzonderlijk. Dit is vooral het geval wanneer het aantal elementen dynamisch verandert, in welk geval het niet nodig is om handlers voor elementen bij te werken.

        Als de Booleaanse waarde true is, zal de door de luisteraar opgegeven functie nooit de standaardactie van de gebeurtenis annuleren (roep de methode preventieDefault() aan). Als de gebeurtenishandler de methode preventieDefault() aanroept, negeert de browser van de gebruiker deze en genereert een waarschuwing in de console. De Booleaanse waarde false geeft aan dat de handlerfunctie de standaardactie van de gebeurtenis kan annuleren (deze kan de methode preventieDefault() aanroepen).

        Volgens de specificatie is de standaardwaarde voor de passieve parameter altijd false . Hierdoor kunnen gebeurtenislisteners die bepaalde aanraakgebeurtenissen afhandelen echter de hoofdthread van de browser blokkeren wanneer ze proberen het scrollen af ​​te handelen, wat kan resulteren in aanzienlijke prestatievermindering tijdens het scrollen.

        Om dit probleem te voorkomen, kunnen sommige browsers (met name En ) heeft de standaardwaarde van de passieve parameter gewijzigd in true voor de touchstart- en touchmove-gebeurtenissen in de documentniveauknooppunten Window , Document en Document .body. Dit voorkomt dat de gebeurtenislistener wordt aangeroepen, zodat deze niet kan voorkomen dat de pagina wordt weergegeven tijdens het scrollen.

        U hoeft zich geen zorgen te maken over de passieve waarde van de onderliggende scroll-gebeurtenis, aangezien deze niet kan worden geannuleerd en gebeurtenislisteners de weergave van de pagina toch niet kunnen blokkeren.

        De nuances van het gebruik hiervan in een gebeurtenishandler

        In de regel is het noodzakelijk om het element door te geven waarop de gebeurtenishandler is geactiveerd, dit geldt vooral als u een generieke gebeurtenishandler gebruikt voor elementen van hetzelfde type. Als u een reguliere gebeurtenishandlerfunctie aan een element toevoegt met behulp van de addEventListener() -methode, dan zal de waarde this in zo'n handler een verwijzing naar het element zijn. De waarde hiervan zal hetzelfde zijn als de waarde van de eigenschap currentTarget van het gebeurtenisargument van het Event-object dat wordt doorgegeven aan de gebeurtenishandler, bijvoorbeeld:

        .forEach(functie (.addEventListener("klik", function ( e) ( console .log(deze .className); // zal de waarde van de eigenschap className van het elem-element console .log( naar de console afdrukken e.currentTarget === dit); // WAAR ) )

        Let op een belangrijk punt, de waarde hiervan kan veranderen, pijlfuncties hebben bijvoorbeeld geen eigen context en in dit geval zal dit niet verwijzen naar het element:

        .forEach(functie (.addEventListener("klik", ( e) => ( console .log(deze .className); // dit verwijst niet naar het elem-element console .log( e.currentTarget === dit); // vals)

        Laten we eens kijken naar een andere situatie waarin de gebeurtenishandler is opgegeven als een gebeurtenisattribuut HTML element. Code JavaScript in het attribuut wordt de waarde effectief verpakt in een handlerfunctie die de this-waarde bindt op een manier die consistent is met de addEventListener() -methode (dit vertegenwoordigt in code een verwijzing naar het element):

        // geeft de waarde van de id-eigenschap van het element weer aan de console

        Wanneer u op een element klikt, wordt informatie over de waarde van het globale attribuut van het element weergegeven in de console, aangezien deze waarde binnen de functie die wordt aangeroepen door de code in de attribuutwaarde zich gedraagt ​​volgens standaardregels, en in dit geval verwijst naar het element dat de gebeurtenis heeft geactiveerd. Laten we eens kijken naar het volgende voorbeeld:

        // dit verwijst niet naar het element dat de gebeurtenis heeft geactiveerd);

        Houd er rekening mee dat de waarde this binnen de functie myFunc() een verwijzing zal zijn naar het globale Window-object, of ongedefinieerd zal zijn als de strikte modus is opgegeven ( strikte modus).

        Om de noodzakelijke context door te geven, kunt u de call()-methode van het Function-object gebruiken, waarmee u een functie kunt aanroepen (uitvoeren) als een methode van het object, waarbij u de uitvoeringscontext (this) instelt op de opgegeven waarde, terwijl je de nodige argumenten doorgeeft:

        const myFunc = function () ( console .log(this .id) // dit verwijst naar het element dat de gebeurtenis heeft geactiveerd);

        In dit geval wordt, wanneer de gebeurtenis wordt geactiveerd, de waarde van het globale attribuut van het element dat de gebeurtenis heeft geactiveerd, naar de console afgedrukt.

        Om een ​​klikgebeurtenis toe te voegen. Wanneer de gebruiker op het knop ID="demo"-element klikt, is het uitvoerelement "Hallo wereld":


        . Document.getElementById("demo") innerHTML = "Hallo wereld";
        });


        Probeer het » Definitie en gebruik

        De methode addEventListener() wordt gebruikt om een ​​gebeurtenishandler voor een bepaald element toe te voegen.


        voorbeelden

        U kunt zoveel gebeurtenissen toevoegen als u wilt in een document; het toevoegen van een gebeurtenis overschrijft geen bestaande gebeurtenis.

        Dit voorbeeld laat zien hoe u twee klikgebeurtenissen aan een element toevoegt:

        Document.getElementById("mijnBtn") addEventListener("klik", MYFUNCTION);


        Probeer het »
        voorbeelden

        Je kunt verschillende soorten evenementen in één element toevoegen.

        Dit voorbeeld laat zien hoe u meerdere gebeurtenissen kunt toevoegen met het element:

        Document.getElementById("mijnBtn") addEventListener("MouseOver", MYFUNCTION);
        . Document.getElementById("mijnBtn") addEventListener("klik", someOtherFunction);
        . Document.getElementById("myBtn") addEventListener("MouseOut", someOtherFunction);


        Probeer het »
        voorbeelden

        Gebruik bij het doorgeven van een parameterwaarde een functieaanroep met "anonieme functie"-parameters:

        document.getElementById("mijnBtn"). addEventListener("klik", function()(
        tyPrinsHop(p1, p2);
        });


        Probeer het »
        voorbeelden

        Artikelreferentie bewerken:

        document.getElementById("mijnBtn"). addEventListener("klik", function()(
        this.style.backgroundColor = "rood";
        });


        Probeer het »
        voorbeelden

        Gebruik geavanceerde opties om het verschil te demonstreren gebruikCapture kookt en vangt fasen:

        Document.getElementById("mijnDiv") addEventListener("klik", tyRipsOn, true);

        Koppel een klikgebeurtenis aan een element. Wanneer de gebruiker op de knop klikt, verschijnt de uitvoer "Hallo wereld".

        Element met id = "demo":


        document.getElementById("demo").innerHTML = "Hallo wereld";
        });

        Probeer het zelf"

        Hieronder vindt u meer voorbeelden van 'Probeer het zelf'.

        Definitie en gebruik

        De methode addEventListener() koppelt een gebeurtenishandler voor het opgegeven element.


        voorbeeld

        U kunt veel gebeurtenissen aan één element toevoegen zonder bestaande gebeurtenissen te overschrijven.

        Dit voorbeeld laat zien hoe u twee klikgebeurtenissen aan hetzelfde element toevoegt:

        Document.getElementById("mijnBtn").addEventListener("klik", mijnFunctie);

        Probeer het zelf"
        voorbeeld

        U kunt verschillende soorten gebeurtenissen aan één element toevoegen.

        Dit voorbeeld laat zien hoe u veel gebeurtenissen aan hetzelfde element kunt toevoegen:

        Document.getElementById("mijnBtn").addEventListener("mouseover", mijnFunctie);
        document.getElementById("mijnBtn").addEventListener("klik", someOtherFunction);
        document.getElementById("mijnBtn").addEventListener("mouseout", someOtherFunction);

        Probeer het zelf"
        voorbeeld

        Gebruik bij het doorgeven van parameterwaarden de "anonieme functie" die de opgegeven functie met parameters aanroept:

        Document.getElementById("mijnBtn").addEventListener("klik", function() (
        mijnFunctie(p1, p2);
        });

        Probeer het zelf"
        voorbeeld

        De achtergrondkleur van een element wijzigen:

        Document.getElementById("mijnBtn").addEventListener("klik", function())(
        this.style.backgroundColor = "rood";