می خواستم وقتی رو یک المنت اچ تی ام ال کلیک می کنم تابع جاوااسکریپتم اجرا بشه و مشکلم اینه که تو این تابع جاوااسکریپت از کجا بفهمم کدوم المنت اچ تی ام ال این تابع رو صدا زده ؟ لطفا سریع کمکم کنید. ممنون
Printable View
می خواستم وقتی رو یک المنت اچ تی ام ال کلیک می کنم تابع جاوااسکریپتم اجرا بشه و مشکلم اینه که تو این تابع جاوااسکریپت از کجا بفهمم کدوم المنت اچ تی ام ال این تابع رو صدا زده ؟ لطفا سریع کمکم کنید. ممنون
یک روش که تو اینترنت یاد گرفتم این بود که توی تگ اون المنت خاص موقع صدا زدن از this.id استفاده کنم
آیا راهی هست که بدون ارسال پارامتر هم بشه فهمید ؟کد:<button id="b1" onclick="func(this.id)"> button</button>
[HTML]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script>
function ondiv(el)
{
//el is elemnt
}
</script>
</head>
<body>
<div id="sender" onclick="ondiv(this)"> </div>
</body>
</html>[/HTML]
فکر کنم، نیازی به ارسال اون پارامتر نیست، چون تابع رخداد هست، شی رخداد رو دریافت می کنه. یه پارامتر تعریف کن به اسم e و شی هدف می شه e.target
بله درسته در بیشتر مرورگرها شیء رویداد به تابع پاس داده میشه. البته حتماً هم اسم متغیر e نیست. به طور کلی اولین پارامتری که به تابع پاس داده میشه شیء رویداد هست. حالا میشه در هنگام تعریف تابع این پارامتر رو نامگذاری کرد یا اینکه از طریق arguments در داخل تابع به این پارامتر دسترسی داشت:
در IE هم که همیشه عوضی هست باید اینطوری به منشأ رویداد دسترسی داشت:کد:customHandler1 = function(evt) {
console.log(evt.target)
};
customHandler2 = function() {
console.log(arguments[0].target)
};
کد:customHandler = function() {
alert(window.event.srcElement);
};