تخفیف نوروزی پی استور

کد تخفیف: PR1404

شامل تمامی آثار
روز
ساعت
دقیقه
ثانیه

با خرید اشتراک ویژه ، با هزینه بسیار کمتر به فایل های پاورپوینت دسترسی داشته باشید!

آموزش جاوا اسکریپت – رویدادها در جاوا اسکریپت

آموزش جاوا اسکریپت - رویدادها در جاوا اسکریپت
رویداد به اتفاقاتی گفته می‌شود که هنگام تعامل کاربر با HTML رخ می‌دهد. رویدادها می‌توانند چندین نوع داشته باشند؛ برخی از رویدادها ممکن است به صورت خودکار انجام شوند و برخی ممکن است نیازمند کلیک کاربر باشد.

فهرست مطالب

در این پست از مجموعه آموزش های جاوا اسکریپت JavaScript، به مبحث رویدادها در جاوا اسکریپت می‌رسیم. اول از همه بهتر است بپرسیم رویداد (Event) چیست؟ رویدادها در جاوا اسکریپت یکی از مباحث مهم در جاوا اسکریپت می‌باشد.

بهتر است بدانید که رویدادها جزئی از مدل شی گرای سند (DOM) می‌باشد. پس بنابراین بهتر است قبل از شروع یادگیری این مبحث با DOM آشنایی داشته باشید.

رویداد (Event) چیست؟

اگر بخواهیم به زبان ساده درمورد رویدادها در جاوا اسکریپت توضیح دهیم، رویداد به معنی رخ دادن یکسری اتفاقات در مرورگر می‌باشد. و یا رویداد به عبارتی دستکاری صفحات وب به دست کاربر و یا به دست مرورگر (به صورت خودکار) می‌باشد.

زمانی که کاربر کلیک می‌کند یک رویداد رخ می‌دهد. زمانی که صفحه وب بارگزاری می‌شود نیز یک رویداد رخ می‌دهد. یک طراح وب باید بداند چگونه با استفاده از رویدادها تعامل ایجاد کند و چگونه رویدادها را کنترل کند.

یک مثال ساده : تا به حال دقت کرده‌اید زمانی که بر روی دکمه ارسال در فرم نظرات کلیک می‌کنید متن داخل دکمه تغییر می‌کند؟ یا تا به حال دیده‌اید که هنگام رفتن ماوس بر روی یک تصویر، آن تصویر دچار تغییراتی شود، مثلا سایز آن بزرگ شود یا یک دور چرخش داشته باشد؟ همه این ها یک رویداد می‌باشند که توسط مرورگر یا کاربر انجام می‌شوند.

روش های استفاده از رویدادها

در جاوا اسکریپت می‌توانیم رویدادها را با سه روش استفاده کنیم که در ادامه پست به آنها می‌پردازیم :

  • خطی (inline) : در این روش رویداد مورد نظر را داخل همان کد HTML که می‌خواهیم می‌نویسیم.
  • مستقل در جاوا اسکریپت : در این روش رویدادها را داخل همان فایل جاوا اسکریپت یا تگ <script> با استفاده از دسترسی به عنصر (document.getElementById) می‌نویسیم.
  • استفاده از متدهای ()addEventListener و ()removeEventListener : در این روش نیز رویدادها را با استفاده از متدهای ذکر شده در جاوا اسکریپت تعریف می‌کنیم.

مثال برای استفاده از رویدادها

توجه : در این مثال ها از رویداد onclick استفاده کرده‌ایم که یکی از رویدادهای ماوس می‌باشد. در ادامه پست رویدادها در جاوا اسکریپت به توضیح ادامه این رویدادها خواهیم پرداخت.
آموزش جاوا اسکریپت - رویدادها در جاوا اسکریپت

روش خطی

در این روش استفاده از رویدادها در جاوا اسکریپت، همانطور که از نامش پیداست به صورت خطی انجام می‌پذیرد. این روش بسیار متداول و آسان است و در ادامه پسا رویدادها در جاوا اسکریپت، ما نیز در تمامی مثال‌ها از این روش استفاده کرده‌ایم.

شکل کلی این دستور به صورت زیر است :

<element onclick="myScript">

به جای element تگ مورد نظر خود را می‌نویسیم و به جای myScript نام تابعی که می‌خواهیم اجرا شود می‌نویسیم.

مثال :

<button onclick="myFunction()">Click me</button>
<p id="demo"></p>

<script>
function myFunction() {
  document.getElementById("demo").innerHTML = "Hello World";
}
</script>

روش مستقل

این روش دقیقا متناسب با نام خود به صورت کاملا مستقل عمل می‌کند. در این روش داخل تگ HTML هیچ دستور جاوا اسکریپتی نوشته نمی‌شود. معمولا از این روش بسیار کم استفاده می‌شود.

شکل کلی این دستور به صورت زیر است :

object.onclick = function(){myScript};

به جای object عنصری که می‌خواهیم رویداد بر روی آن اعمال شود می‌نویسیم و به جای myScript نام تابعی که می‌خواهیم اجرا شود می‌نویسیم.

برای استفاده از این دستور و دسترسی به عنصر مورد نظر دو روش وجود دارد :

  • استفاده از document.getElementById (و یا دیگر روش های فراخوانی عنصر) و اعمال مستقیم رویداد بر روی عنصری که بازگردانده می‌شود.
  • فراخوانی یک عنصر و برابر قرار دادن آن با یک متغیر و اعمال رویداد بر روی متغیر.

هر دو روش کاملا صحیح می‌باشند و ما از هر دو روش یک مثال برایتان می‌زنیم.

بدون استفاده از متغیر :

<p id="demo">Click me to change</p>

<script>
document.getElementById("demo").onclick = function () {myFunction()};
function myFunction() {
  document.getElementById("demo").innerHTML = "Hello World";
}
</script>

با استفاده از تعریف متغیر :

<p id="demo">Click me to change</p>

<script>
var b = document.getElementById("demo");
b.onclick = function () {myFunction()};
function myFunction() {
  document.getElementById("demo").innerHTML = "Hello World";
}
</script>

آموزش جاوا اسکریپت - رویدادها در جاوا اسکریپت

استفاده از متدهای ()addEventListener و ()removeEventListene

ابتدا بهتر است بدانیم Event Handler چیست؟ به زبان ساده Event Handler به یک کدی گفته می‌شود که وظیفه مدیریت یک یا چند رویداد است. حالا ما می‌توانیم با استفاده از متد ()addEventListener یک Event Handler ایجاد کنیم. با استفاده از این متد می‌توان چندین Event Handler ایجاد کرد.

شکل کلی این دستور به صورت زیر است :

object.addEventListener("click", myScript);

به جای object عنصری که می‌خواهیم رویداد بر روی آن اعمال شود می‌نویسیم و به جای myScript نام تابعی که می‌خواهیم اجرا شود می‌نویسیم.

نکته : در جاوا اسکریپت هنگام اضافه کردن رویدادها به طور مثال onclick نوشته می‌شود. اما در این متد باید on را از ابتدای رویداد حذف کنید.

همانند روش بالا می‌توانیم برای اجرای این دستور از متغیر استفاده کنیم و یا استفاده نکنیم.

مثال بدون استفاده از متغیر :

<p id="demo">Click me.</p>

<script>
document.getElementById("demo").addEventListener("click", myFunction);

function myFunction() {
  document.getElementById("demo").innerHTML = "YOU CLICKED ME!";
}
</script>

مثال با استفاده از متغیر :

<p id="demo">Click me.</p>

<script>
var b = document.getElementById("demo");
b.addEventListener("click", myFunction);

function myFunction() {
  document.getElementById("demo").innerHTML = "YOU CLICKED ME!";
}
</script>

این روش در دهه اخیر به عنوان یک روش استاندارد تعریف رویداد برای یک عنصر معرفی شده است. همچنین استفاده از این روش بهینه تر است.

نکته : این متد در مرورگر اینترنت اکسپلور  نسخه ۸ و پایین تر ساپورت نمی‌شود.

یک مثال دیگر به همراه متد ()removeEventListene :

<button id="clickIt">Click here</button>
<br>
<p id="demo"></p>

<script>
var x = document.getElementById("clickIt");
x.addEventListener("click", myFunction);
function myFunction() {
  document.getElementById("demo").innerHTML +="You clicked the button" + "<br><br>";
  document.getElementById("demo").innerHTML +="Now click Event is disabled!!" + "<br><br>";
  x.removeEventListener("click", myFunction);
}
</script>

در این مثال درصورتی که متد ()removeEventListene استفاده نشود با هر بار کلیک بر روی دکمه متن داخل پاراگراف تکرار خواهد شد.

انواع رویدادها

اگر بخواهیم رویدادها را به چند دسته تقسیم کنیم می‌توان آن‌ها را به پنج دسته تقسیم کرد :

  • رویدادهای Mouse
  • رویدادهای Keyboard
  • رویدادهای Clipboard
  • رویدادهای Focus
  • دیگر رویدادها

چهار رویداد ذکر شده رایج ترین رویدادهای موجود در جاوا اسکریپت می‌باشند. در ادامه پست آموزش رویدادها در جاوا اسکریپت به توضیح هرکدام از این رویدادها خواهیم پرداخت.

رویدادهای Mouse

این رویدادها بیشترین استفاده را دارند و بسیار رایج می‌باشند. رویدادهای ماوس به صورت زیر می‌باشند:

  • onclick : زمانی که کاربر روی عنصر کلیک کند رخ می‌دهد.

مثال :

<h1 id="demo" onclick="myFunction()">Click me.</h1>

<script>
function myFunction() {
  document.getElementById("demo").style.color="red";
}
</script>
  • oncontextmenu : زمانی که کاربر روی عنصر راست کلیک کند رخ می‌دهد.

مثال :

<p style="background: yellow; padding: 10px;" oncontextmenu="myFunction()">
Right-click inside this box
</p>

<script>
function myFunction() {
  alert("You right-clicked inside the paragraph!");
}
</script>
  • ondblclick : زمانی که کاربر روی عنصر دابل کلیک کند رخ می‌دهد.

مثال :

<p ondblclick="myFunction()">Double-click this paragraph to trigger a function.</p>
<p id="demo"></p>

<script>
function myFunction() {
  document.getElementById("demo").innerHTML = "Hello World";
}
</script>
  • onmousedown : زمانی که کاربر روی عنصر کلیک کرده و نگه می‌دارد رخ می‌دهد.
  • onmouseup : زمانی که کاربر روی عنصر کلیک کرده و رها می‌کند رخ می‌دهد.
  • onmouseenter : زمانی که کاربر اشاره‌گر ماوس را بر روی عنصر ببرد رخ می‌دهد.
  • onmouseleave : زمانی که کاربر اشاره‌گر ماوس را از روی عنصر بردارد رخ می‌دهد.

مثال کلی برای این رویدادها :

<p id="myP" onmousedown="mouseDown()" onmouseup="mouseUp()" onmouseenter="mouseEnter()" onmouseleave="mouseLeave()">
Hover the mouse pointer over the text.
press mouse button down over this paragraph.
release mouse button.
move mouse pointer out of the text.
</p>

<script>
function mouseDown() {
  document.getElementById("myP").style.color = "red";
}
function mouseUp() {
  document.getElementById("myP").style.color = "green";
}
function mouseEnter() {
  document.getElementById("myP").style.color = "orange";
}
function mouseLeave() {
  document.getElementById("myP").style.color = "blue";
}
</script>

آموزش جاوا اسکریپت - رویدادها در جاوا اسکریپت

رویدادهای Keyboard

  • onkeydown : زمانی که کاربر کلیدی را فشار دهد رخ می‌دهد.

مثال :

<input type="text" onkeydown="myFunction()">

<script>
function myFunction() {
  alert("You pressed a key inside the input field");
}
</script>
  • onkeypress : زمانی که کاربر یکی از کلیدهای تایپی و حسابی را فشار دهد رخ می‌دهد.

مثال :

<input type="text" onkeypress="myFunction()">

<script>
function myFunction() {
  alert("You pressed a Typewriter or Numeric key inside the input field");
}
</script>
  • onkeyup : زمانی که کاربر یکی از کلیدها را فشار داده و رها می‌کند رخ می‌دهد.

مثال :

Enter your name: <input type="text" id="fname" onkeyup="myFunction()">

<script>
function myFunction() {
  var x = document.getElementById("fname");
  x.value = x.value.toUpperCase();
  document.getElementById("fname").style.background = "yellow";
}
</script>

آموزش جاوا اسکریپت - رویدادها در جاوا اسکریپت

رویدادهای Clipboard

  • oncopy :  زمانی که کاربر محتوای یک عنصر را کپی می‌کند رخ می‌دهد.
  • oncut : زمانی که کاربر محتوای یک عنصر را کات می‌کند رخ می‌دهد.
  • onpaste : زمانی که کاربر یک محتوایی را داخل عنصر پیست می‌کند رخ می‌دهد.

مثال کلی برای این رویدادها :

<input type="text" oncopy="myFunction1()" oncut="myFunction2()" onpaste="myFunction3()" value="Try to copy, cut or paste this text">
<p id="demo"></p>

<script>
function myFunction1() {
  document.getElementById("demo").innerHTML = "You copied the text!"
}
function myFunction2() {
  document.getElementById("demo").innerHTML = "You cut the text!"
}
function myFunction3() {
  document.getElementById("demo").innerHTML = "You pasted the text!"
}
</script>

در این مثال سعی کنید متن داخل کادر متنی را کپی، کات و یا پیست کنید و رویداد مورد نظر اعمال خواهد شد.

رویدادهای Focus

  • onfocusin : زمانی که یک عنصر در حال تمرکز است رخ می‌دهد.
  • onfocusout : زمانی که یک عنصر درحال از دست دادن تمرکز است رخ می‌دهد.

مثال کلی برای این رویدادها :

Enter your name: <input id="demo" type="text" onfocusin="myFunction1()" onfocusout="myFunction2()">
<script>
function myFunction1() {
document.getElementById("demo").style.background = "gray";
document.getElementById("demo").style.color = "white";
}
function myFunction2() {
document.getElementById("demo").style.background = "red";
}
</script>

در این مثال زمانی که داخل کادر متنی کلیک کنید فوکوس اعمال خواهد شد و رویداد مورد نظر نیز اعمال می‌شود. و زمانی که در خارج از عنصر کلیک کنید فوکوس از دست می‌رود و در نتیجه رویداد مورد نظر اعمال خواهد شد.

آموزش جاوا اسکریپت - رویدادها در جاوا اسکریپت

شیء event

تمامی رویدادهایی که در بالا ذکر کردیم همگی جزئی از شیء event می‌باشند. این شیء می‌تواند با برخی رویدادهای Mouse و Keyboard نیز همراه شود. برای مثال :

  • altKey : زمانی که کاربر کلید alt را فشار دهد رخ می‌دهد.
  • ctrlKey : زمانی که کاربر کلید ctrl را فشار دهد رخ می‌دهد.
  • shiftKey : زمانی که کاربر کلید shift را فشار دهد رخ می‌دهد.

این سه رویداد می‌تواند هم با onmousedown و هم با onkeydown همراه شود.

مثال کلی برای onkeydown :

<input type="text" onkeydown="isKeyPressed(event)">
<p id="demo"></p>

<script>
function isKeyPressed(event) {
  var x = document.getElementById("demo");
  if (event.altKey) {
    x.innerHTML = "The ALT key was pressed!";
  }
  if (event.ctrlKey) {
    x.innerHTML = "The CTRL key was pressed!";
  }
  if (event.shiftKey) {
    x.innerHTML = "The SHIFT key was pressed!";
  }
}
</script>

در این مثال درصورتی که داخل کادر متنی یکی از کلیدهای ctrl ،alt و یا shift را فشار دهید یک پیغامی که به عنوان رویداد ثبت شده است نمایش داده می‌شود.

مثال کلی برای onmousedown :

<body onmousedown="isKeyPressed(event)">
<p><strong>Tip:</strong> Try to press and hold down the alt, ctrl or shift key (on your keyboard) before you click in the document.</p>

<script>
function isKeyPressed(event) {
  if (event.altKey) {
    alert("The ALT key was pressed!");
  }
  if (event.ctrlKey) {
    alert("The CTRL key was pressed!");
  }
  if (event.shiftKey) {
    alert("The SHIFT key was pressed!");
  } 
}
</script>

در این مثال درصورتی که همراه با فشردن یکی از کلیدهای ctrl ،alt و یا shift با ماوس کلیک کنید یک پیغامی که به عنوان رویداد ثبت شده است نمایش داده می‌شود.

علاوه بر این، تمامی اشیاء موجود در DOM جزئی از شیء event نیز هستند. شیء event دارای یکسری متد و رویداد منحصر به فرد خود است که در ادامه به برخی از این رویدادهای پرکاربرد اشاره می‌کنیم :

  • onchange : زمانی که مقدار یک کادر ورودی یا combo box و یا list box تغییر کند و تمرکز خود را از دست بدهد به صورت خودکار رخ می‌دهد.

مثال :

Enter some text: <input type="text" name="txt" onchange="myFunction(this.value)">

<script>
function myFunction(val) {
  alert("The input value has changed. The new value is: " + val);
}
</script>

در این مثال زمانی که شما داخل کادر ورودی متنی را وارد کنید و سپس کادر ورودی از تمرکز خارج شود رویدادی که درنظر گرفته شده اجرا می‌شود.

  • oninput : زمانی که مقدار یک کادر ورودی تغییر کند رخ می‌دهد. این رویداد همانند onchange می‌باشد با این تفاوت که در این رویداد بلافاصله پس از تغییر رویداد رخ می‌دهد و همچنین تنها بر روی input و textarea عمل می‌کند.

مثال :

<input type="range" oninput="myFunction(this.value)">                             
<p id="demo"></p>

<script>
function myFunction(val) {
  document.getElementById("demo").innerHTML = val; 
}
</script>
  • onerror : زمانی که یک فایل یا رسانه خارجی نتواند بارگیری شود رخ می‌دهد.

مثال :

<img src="image.png" onerror="myFunction()">
<p>example image.</p>

<script>
function myFunction() {
  alert('The image could not be loaded.');
}
</script>
  • onload : زمانی که یک شیء یا صفحه بارگیری کامل شده باشد رخ می‌دهد.

مثال :

<body onload="myFunction()">
<img src="https://programstore.ir/wp-content/uploads/2021/11/events-in-js-600x300.png">

<script>
function myFunction() {
  alert("Page is loaded");
}
</script>
</body>
  • onselect : زمانی که متنی در input و یا textarea انتخاب شود رخ می‌دهد.

مثال :

<p>Select some of the text:</p>
<input type="text" value="Hello world!" onselect="myFunction()">

<script>
function myFunction() {
  alert("You selected some text!");
}
</script>

سخن آخر در مورد آموزش رویدادها در جاوا اسکریپت

به طور کلی رویدادها در جاوا اسکریپت از مهم ترین مبحث های جاوا اسکریپت می‌باشد. زیرا این رویدادها هستند که به هنگام تعامل کاربر با صفحه وب می‌تواند به وب سایت زیبایی ببخشد و یا کاربر را از سردرگمی دربیاورد.

همانطور که در بالا ذکر کردیم رویدادها جزئی از DOM هستند که به تعامل کاربر با صفحه وب کمک بسزایی می‌کند. شما می‌توانید در جاوا اسکریپت با استفاده از رویدادها کارهای بسیاری را تنها با دوخط کد انجام دهید و در فضا و زمان صرفه جویی کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *