ชวเลข Javascript สำหรับ if คำสั่งแบบมีเงื่อนไขหากเป็นอย่างอื่น คำสั่ง exit วนซ้ำจะพังและดำเนินการต่อใน JavaScript คำสั่งออก

คำจำกัดความและแอปพลิเคชันเป้าหมายเหตุการณ์ JavaScript

เมธอด JavaScript addEventListener() ของอ็อบเจ็กต์ EventTarget ช่วยให้คุณสามารถลงทะเบียนตัวจัดการเหตุการณ์ประเภทเฉพาะสำหรับเป้าหมายเฉพาะได้

เป้าหมายอาจเป็นออบเจ็กต์ เช่น Element, Document, Window หรือออบเจ็กต์อื่นๆ ที่รองรับเหตุการณ์ เช่น ออบเจ็กต์ เช่น XMLHttpRequest ซึ่งใช้กันอย่างแพร่หลายในคำขอแบบอะซิงโครนัส อาแจ็กซ์(จากภาษาอังกฤษ Javascript และ XML แบบอะซิงโครนัส- "JavaScript และ XML แบบอะซิงโครนัส") ซึ่งอนุญาตให้เพจเฉพาะอัปเดตเพียงบางส่วนเท่านั้นโดยไม่รบกวนประสบการณ์ผู้ใช้

โปรดทราบว่าคุณสามารถใช้เมธอด RemoveEventListener() เพื่อลบตัวจัดการเหตุการณ์ที่แนบมาโดยใช้เมธอด addEventListener()

การสนับสนุนเบราว์เซอร์สำหรับไวยากรณ์ JavaScript: เป้า.addEventListener( พิมพ์, ผู้ฟัง); เป้า.addEventListener( พิมพ์, ผู้ฟัง, ตัวเลือก); เป้า.addEventListener( พิมพ์, ผู้ฟัง, ใช้Capture); พิมพ์- เชือก ผู้ฟัง- การทำงาน ตัวเลือก- วัตถุ ใช้Capture- Boolean Specification Document Object Model (DOM) ระดับ 2 เหตุการณ์ ค่าพารามิเตอร์ คำอธิบายพารามิเตอร์
พิมพ์ ค่าสตริงที่แสดงถึงประเภทของเหตุการณ์ที่จะรับฟัง (ค่าจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) พารามิเตอร์ที่จำเป็น
ผู้ฟัง วัตถุที่ได้รับการแจ้งเตือนเมื่อมีเหตุการณ์ประเภทที่ระบุเกิดขึ้น (วัตถุที่ใช้อินเทอร์เฟซเหตุการณ์) นี่ต้องเป็นออบเจ็กต์ที่ใช้อินเทอร์เฟซ EventListener หรือฟังก์ชัน จาวาสคริปต์- พารามิเตอร์ที่จำเป็น
ตัวเลือก ออบเจ็กต์ที่ระบุคุณลักษณะของผู้ฟังเหตุการณ์ (เป็นทางเลือก)
ตัวเลือกที่มี:
  • capture - ค่าบูลีนที่กำหนดว่าเหตุการณ์ประเภทนี้จะถูกส่งไปยังผู้ฟังที่ลงทะเบียน (ตัวจัดการเหตุการณ์) ก่อนที่จะถูกส่งไปยัง EventTarget ใด ๆ หรือไม่ ดอม- หากคุณส่งค่าบูลีน true ฟังก์ชันจะถูกลงทะเบียนเป็นตัวจัดการการสกัดกั้น และจะถูกเรียกในเฟสการสกัดกั้น ( ขั้นตอนการจับภาพเฟสเดือด).
  • ครั้งเดียว - ค่าบูลีนที่ระบุว่าควรเรียกตัวจัดการเหตุการณ์ไม่เกินหนึ่งครั้งหลังจากเพิ่มแล้ว หากค่าบูลีนเป็นจริง Listener จะถูกลบออกโดยอัตโนมัติเมื่อมีการเรียก
  • passive - ค่าบูลีนที่หากเป็นจริง บ่งชี้ว่าฟังก์ชันที่ระบุโดยผู้ฟังจะไม่ยกเลิกการกระทำเริ่มต้นของเหตุการณ์ (เรียก PreventDefault() PreventDefault() และเบราว์เซอร์ของผู้ใช้จะเพิกเฉยและสร้างคำเตือนเมื่อทำเช่นนั้นในคอนโซล .
ใช้Capture ค่าบูลีนที่กำหนดว่าเหตุการณ์ประเภทนี้จะถูกส่งไปยังผู้ฟังที่ลงทะเบียน (ตัวจัดการเหตุการณ์) ก่อนที่จะถูกส่งไปยัง EventTarget ใดๆ ที่อยู่ด้านล่างในแผนผังหรือไม่ ดอม.
หากคุณส่งค่าบูลีน true ฟังก์ชันจะถูกลงทะเบียนเป็นตัวจัดการการสกัดกั้น และจะถูกเรียกในเฟสการสกัดกั้น ( ขั้นตอนการจับภาพ- ค่าเริ่มต้นคือเท็จ - ตัวจัดการเหตุการณ์จะเริ่มทำงานในช่วงฟองสบู่ ( เฟสเดือด- พารามิเตอร์ทางเลือก ใช้Captureพารามิเตอร์
ไม่ได้เป็นตัวเลือกเสมอไป ตามหลักการแล้ว คุณควรเปิดใช้งานเพื่อรองรับเบราว์เซอร์ที่กว้างขึ้น
  • 1
ตัวอย่างการใช้งาน การใช้งานพื้นฐานของวิธีการ การใช้ JavaScript addEventListener() วิธีการ const ul = document .querySelector("ul "), // เลือกองค์ประกอบ ul แรกในเอกสาร listElements = document .querySelectorAll("li "); // เลือกองค์ประกอบ li ทั้งหมดในเอกสาร const myFunc = function (เหตุการณ์ const ul = document .querySelector("ul "), // เลือกองค์ประกอบ ul แรกในเอกสาร listElements = document .querySelectorAll("li "); // เลือกองค์ประกอบ li ทั้งหมดในเอกสาร const myFunc = function () ( ถ้า ( const ul = document .querySelector("ul "), // เลือกองค์ประกอบ ul แรกในเอกสาร listElements = document .querySelectorAll("li "); // เลือกองค์ประกอบ li ทั้งหมดในเอกสาร const myFunc = function (.target.tagName === "LI ") ( // หากวัตถุที่ส่งเหตุการณ์มีค่าคุณสมบัติ tagName เท่ากับ LI .target.style.color = "สีเขียว"; // จากนั้นกำหนดสีข้อความเป็นสีเขียว ) ) ; ul .addEventListener("คลิก", myFunc - // ตั้งค่าตัวจัดการเหตุการณ์การคลิกเป็นองค์ประกอบ ulรายการองค์ประกอบ .forEach(ฟังก์ชัน (องค์ประกอบ .forEach(ฟังก์ชัน () ( // ดูองค์ประกอบทั้งหมดของคอลเลกชัน

.addEventListener("dblclick ", function ()( // ตั้งค่าแต่ละองค์ประกอบ li ให้กับตัวจัดการเหตุการณ์ dblclick นี้ .style.color = "#000 "; // ตั้งค่าสีข้อความเป็นสีดำ ) ) ) )

    ในตัวอย่างนี้ เราได้วางรายการสัญลักษณ์แสดงหัวข้อย่อย ( ) ภายในที่เราวางไว้ห้า
  • องค์ประกอบรายการ ( - โดยใช้เมธอด querySelector() ที่เราเลือกอันดับแรก
      องค์ประกอบ
    • ในเอกสารและใช้เมธอด querySelectorAll() องค์ประกอบทั้งหมด

      ในเอกสารและเริ่มต้นตัวแปรด้วยค่าเหล่านี้

        การใช้เมธอด addEventListener() ที่เราตั้งค่าองค์ประกอบ ตัวจัดการเหตุการณ์ "คลิก" (คลิกซ้ายบนองค์ประกอบ) ซึ่งใช้คุณสมบัติเป้าหมายของวัตถุเหตุการณ์ ตรวจสอบชื่อแท็กขององค์ประกอบ และหากค่านี้ตรงกับค่า "LI" จากนั้นจะเปลี่ยนสไตล์สีข้อความเป็นเมื่อถูกกระตุ้น โปรดทราบว่ามักจะสะดวกกว่าในการติดตั้งตัวจัดการหนึ่งตัวต่อองค์ประกอบหลัก แทนที่จะติดตั้งสำหรับแต่ละองค์ประกอบแยกกัน โดยเฉพาะอย่างยิ่งเมื่อจำนวนองค์ประกอบมีการเปลี่ยนแปลงแบบไดนามิก ซึ่งในกรณีนี้ไม่จำเป็นต้องอัปเดตตัวจัดการสำหรับองค์ประกอบ

        หากค่าบูลีนเป็น true ฟังก์ชันที่ Listener ระบุจะไม่ยกเลิกการกระทำเริ่มต้นของเหตุการณ์ (เรียกเมธอด PreventDefault()) หากตัวจัดการเหตุการณ์เรียกใช้เมธอด PreventDefault() เบราว์เซอร์ของผู้ใช้จะเพิกเฉยและสร้างคำเตือนในคอนโซล ค่าบูลีนเป็นเท็จบ่งชี้ว่าฟังก์ชันตัวจัดการสามารถยกเลิกการกระทำเริ่มต้นของเหตุการณ์ได้ (สามารถเรียกเมธอด PreventDefault() ได้)

        ตามข้อกำหนด ค่าเริ่มต้นสำหรับพารามิเตอร์แบบพาสซีฟจะเป็นเท็จเสมอ อย่างไรก็ตาม วิธีนี้ช่วยให้ผู้ฟังเหตุการณ์ที่จัดการเหตุการณ์การสัมผัสบางอย่างสามารถบล็อกเธรดของเบราว์เซอร์หลักเมื่อพยายามจัดการการเลื่อน ซึ่งอาจส่งผลให้ประสิทธิภาพลดลงอย่างมากในระหว่างการประมวลผลการเลื่อน

        เพื่อป้องกันปัญหานี้ เบราว์เซอร์บางตัว (โดยเฉพาะ และ ) เปลี่ยนค่าเริ่มต้นของพารามิเตอร์แบบพาสซีฟเป็นจริงสำหรับเหตุการณ์ touchstart และ touchmove ในโหนดระดับเอกสาร Window , Document และ Document .body วิธีนี้จะป้องกันไม่ให้ผู้ฟังเหตุการณ์ถูกเรียก ดังนั้นจึงไม่สามารถบล็อกเพจไม่ให้แสดงผลขณะเลื่อนได้

        คุณไม่จำเป็นต้องกังวลเกี่ยวกับค่าแฝงสำหรับเหตุการณ์การเลื่อนที่ซ่อนอยู่ เนื่องจากไม่สามารถยกเลิกได้ และผู้ฟังเหตุการณ์จะไม่สามารถบล็อกเพจไม่ให้แสดงต่อไปได้

        ความแตกต่างของการใช้สิ่งนี้ในตัวจัดการเหตุการณ์

        ตามกฎแล้ว จำเป็นต้องส่งองค์ประกอบที่ตัวจัดการเหตุการณ์ถูกทริกเกอร์ โดยเฉพาะอย่างยิ่งเมื่อใช้ตัวจัดการเหตุการณ์ทั่วไปสำหรับองค์ประกอบประเภทเดียวกัน หากคุณเพิ่มฟังก์ชันตัวจัดการเหตุการณ์ปกติให้กับองค์ประกอบโดยใช้เมธอด addEventListener() ค่านี้ภายในตัวจัดการดังกล่าวจะเป็นการอ้างอิงถึงองค์ประกอบ ค่านี้จะเหมือนกับค่าของคุณสมบัติ currentTarget ของอาร์กิวเมนต์เหตุการณ์ของออบเจ็กต์เหตุการณ์ที่ส่งผ่านไปยังตัวจัดการเหตุการณ์ ตัวอย่างเช่น:

        .forEach(ฟังก์ชัน (.addEventListener("คลิก", ​​ฟังก์ชัน ( ) ( console .log(this .className); // จะพิมพ์ค่าของคุณสมบัติ className ขององค์ประกอบองค์ประกอบคอนโซล .log( ไปยังคอนโซล) .currentTarget === นี้ ); // จริง ) )

        โปรดทราบจุดสำคัญ ค่าของสิ่งนี้สามารถเปลี่ยนแปลงได้ เช่น ฟังก์ชันลูกศรไม่มีบริบทนี้เอง และในกรณีนี้ จะไม่อ้างอิงถึงองค์ประกอบ:

        .forEach(ฟังก์ชัน (.addEventListener("คลิก", ​​( ) => ( console .log(this .className); // สิ่งนี้จะไม่อ้างถึงองค์ประกอบองค์ประกอบ console .log( .currentTarget === นี้ ); // เท็จ)

        ลองดูที่สถานการณ์อื่นที่มีการระบุตัวจัดการเหตุการณ์เป็นแอตทริบิวต์ของเหตุการณ์ HTMLองค์ประกอบ. รหัส จาวาสคริปต์ในค่าแอตทริบิวต์จะถูกรวมเข้ากับฟังก์ชันตัวจัดการอย่างมีประสิทธิภาพซึ่งผูกค่านี้ในลักษณะที่สอดคล้องกับเมธอด addEventListener() (ในโค้ดนี้แสดงถึงการอ้างอิงถึงองค์ประกอบ):

        // แสดงค่าของคุณสมบัติ id ขององค์ประกอบไปยังคอนโซล

        เมื่อคุณคลิกที่องค์ประกอบ ข้อมูลเกี่ยวกับค่าของแอตทริบิวต์ส่วนกลางขององค์ประกอบจะแสดงในคอนโซล เนื่องจากค่านี้ภายในฟังก์ชันที่เรียกโดยโค้ดในค่าแอตทริบิวต์จะทำงานตามกฎมาตรฐาน และในกรณีนี้อ้างถึง องค์ประกอบที่ทำให้เกิดเหตุการณ์ ลองดูตัวอย่างต่อไปนี้:

        // สิ่งนี้จะไม่อ้างถึงองค์ประกอบที่ทำให้เกิดเหตุการณ์) ;

        โปรดทราบว่าค่านี้ภายในฟังก์ชัน myFunc() จะเป็นการอ้างอิงไปยังอ็อบเจ็กต์ Window ส่วนกลาง หรือจะไม่ได้กำหนดไว้หากระบุโหมดเข้มงวด ( โหมดเข้มงวด).

        เพื่อที่จะส่งผ่านบริบทที่จำเป็น คุณสามารถใช้เมธอด call() ของอ็อบเจ็กต์ Function ซึ่งอนุญาตให้คุณเรียกใช้ (รัน) ฟังก์ชันเป็นเมธอดของอ็อบเจ็กต์ โดยตั้งค่าบริบทการดำเนินการ ( this ) ให้เป็นค่าที่ระบุ ในขณะที่ผ่านข้อโต้แย้งที่จำเป็น:

        const myFunc = function () ( console .log(this .id) // สิ่งนี้จะอ้างถึงองค์ประกอบที่ทำให้เกิดเหตุการณ์ );

        ในกรณีนี้ เมื่อเหตุการณ์ถูกทริกเกอร์ ค่าของแอตทริบิวต์ส่วนกลางขององค์ประกอบที่ทริกเกอร์เหตุการณ์จะถูกพิมพ์ไปยังคอนโซล

        สำหรับการเพิ่มกิจกรรมการคลิก เมื่อผู้ใช้คลิกที่ปุ่ม ID="demo" องค์ประกอบผลลัพธ์คือ "Hello World":


        - Document.getElementById("demo") innerHTML = "สวัสดีชาวโลก";
        });


        ลองเลย »ความหมายและการใช้งาน

        addEventListener() วิธีการใช้เพื่อเพิ่มตัวจัดการเหตุการณ์สำหรับองค์ประกอบที่กำหนด


        ตัวอย่าง

        คุณสามารถเพิ่มกิจกรรมได้มากเท่าที่คุณต้องการในเอกสาร การเพิ่มกิจกรรมจะไม่เขียนทับกิจกรรมที่มีอยู่

        ตัวอย่างนี้สาธิตวิธีการเพิ่มเหตุการณ์การคลิกสองครั้งในองค์ประกอบ:

        Document.getElementById("myBtn") addEventListener("คลิก", ​​MYFUNCTION);


        ลองเลย »
        ตัวอย่าง

        คุณสามารถเพิ่มเหตุการณ์ประเภทต่างๆ ในองค์ประกอบเดียวได้

        ตัวอย่างนี้แสดงวิธีการเพิ่มหลายเหตุการณ์ที่มีองค์ประกอบ:

        Document.getElementById("myBtn") addEventListener("MouseOver", MYFUNCTION);
        - Document.getElementById("myBtn") addEventListener("คลิก", ​​someOtherFunction);
        - Document.getElementById("myBtn") addEventListener("MouseOut", someOtherFunction);


        ลองเลย »
        ตัวอย่าง

        เมื่อส่งค่าพารามิเตอร์ ให้ใช้การเรียกใช้ฟังก์ชันกับพารามิเตอร์ "ฟังก์ชันที่ไม่ระบุชื่อ":

        document.getElementById("myBtn"). addEventListener("คลิก", ​​function()(
        tyPrinsHop(p1, p2);
        });


        ลองเลย »
        ตัวอย่าง

        แก้ไขรายการอ้างอิง:

        document.getElementById("myBtn"). addEventListener("คลิก", ​​function()(
        this.style.พื้นหลังสี = "สีแดง";
        });


        ลองเลย »
        ตัวอย่าง

        ใช้ตัวเลือกขั้นสูงเพื่อแสดงให้เห็นความแตกต่าง ใช้Captureเดือดและจับเฟส:

        Document.getElementById("myDiv") addEventListener("คลิก", ​​tyRipsOn, จริง);

        แนบเหตุการณ์การคลิกที่องค์ประกอบ เมื่อผู้ใช้คลิกที่ปุ่ม ผลลัพธ์จะเป็น "Hello World"

        องค์ประกอบที่มี id = "สาธิต":


        document.getElementById("demo").innerHTML = "สวัสดีชาวโลก";
        });

        ลองด้วยตัวเอง"

        ตัวอย่าง "ลองด้วยตัวเอง" เพิ่มเติมด้านล่าง

        ความหมายและการใช้งาน

        addEventListener() วิธีการแนบตัวจัดการเหตุการณ์สำหรับองค์ประกอบที่ระบุ


        ตัวอย่าง

        คุณสามารถเพิ่มเหตุการณ์จำนวนมากลงในองค์ประกอบเดียวได้โดยไม่ต้องเขียนทับเหตุการณ์ที่มีอยู่

        ตัวอย่างนี้แสดงวิธีเพิ่มเหตุการณ์การคลิกสองครั้งในองค์ประกอบเดียวกัน:

        Document.getElementById("myBtn").addEventListener("คลิก", ​​myFunction);

        ลองด้วยตัวเอง"
        ตัวอย่าง

        คุณสามารถเพิ่มเหตุการณ์ประเภทต่างๆ ลงในองค์ประกอบเดียวได้

        ตัวอย่างนี้แสดงวิธีการเพิ่มเหตุการณ์จำนวนมากในองค์ประกอบเดียวกัน:

        Document.getElementById("myBtn").addEventListener("mouseover", myFunction);
        document.getElementById("myBtn").addEventListener("คลิก", ​​someOtherFunction);
        document.getElementById("myBtn").addEventListener("mouseout", someOtherFunction);

        ลองด้วยตัวเอง"
        ตัวอย่าง

        เมื่อส่งค่าพารามิเตอร์ ให้ใช้ "ฟังก์ชันที่ไม่ระบุชื่อ" ซึ่งจะเรียกฟังก์ชันที่ระบุพร้อมกับพารามิเตอร์:

        Document.getElementById("myBtn").addEventListener("คลิก", ​​function() (
        ฟังก์ชั่นของฉัน(p1, p2);
        });

        ลองด้วยตัวเอง"
        ตัวอย่าง

        การเปลี่ยนสีพื้นหลังขององค์ประกอบ:

        Document.getElementById("myBtn").addEventListener("คลิก", ​​function())(
        this.style.พื้นหลังสี = "สีแดง";