যে বোতামটি ক্লিক করা হচ্ছে তার আইডি কীভাবে খুঁজে পাবেন?
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
function reply_click()
{
}
যে বোতামটি ক্লিক করা হচ্ছে তার আইডি কীভাবে খুঁজে পাবেন?
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
function reply_click()
{
}
উত্তর:
ফাংশন পরামিতি হিসাবে আপনাকে আইডি প্রেরণ করতে হবে। এটা এভাবে করো:
<button id="1" onClick="reply_click(this.id)">B1</button>
<button id="2" onClick="reply_click(this.id)">B2</button>
<button id="3" onClick="reply_click(this.id)">B3</button>
<script type="text/javascript">
function reply_click(clicked_id)
{
alert(clicked_id);
}
</script>
এই আইডি পাঠাতে হবে this.idযেমন clicked_idযা আপনি আপনার ফাংশনে ব্যবহার করতে পারেন। এটি এখানে কর্মে দেখুন।
event.target.id(আমার জন্য ফায়ারফক্স এবং আইই উভয়ই এটি ছুঁড়ে মারছিল) ব্যবহার করে নাল রেফারেন্সের ব্যতিক্রম পাচ্ছে , এটি একটি দুর্দান্ত সমাধান যা তিনটি প্রধান ব্রাউজারে কাজ করে।
সাধারণভাবে, আপনি যদি আপনার কোড এবং আপনার মার্কআপ পৃথক করেন তবে জিনিসগুলি সংগঠিত রাখা আরও সহজ। আপনার সমস্ত উপাদানগুলির সংজ্ঞা দিন এবং তারপরে আপনার জাভাস্ক্রিপ্ট বিভাগে, সেই উপাদানগুলির উপর সঞ্চালিত হওয়া বিভিন্ন ক্রিয়া সংজ্ঞায়িত করুন।
যখন কোনও ইভেন্ট হ্যান্ডলারকে ডাকা হয়, তখন ক্লিক করা উপাদানটির প্রসঙ্গের মধ্যেই তাকে ডাকা হয়। সুতরাং, শনাক্তকারী এই DOM উপাদান পড়ুন হবে যে আপনি ক্লিক করেছেন। তারপরে আপনি সেই সনাক্তকারীর মাধ্যমে উপাদানটির বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারেন।
উদাহরণ স্বরূপ:
<button id="1">Button 1</button>
<button id="2">Button 2</button>
<button id="3">Button 3</button>
<script type="text/javascript">
var reply_click = function()
{
alert("Button clicked, id "+this.id+", text"+this.innerHTML);
}
document.getElementById('1').onclick = reply_click;
document.getElementById('2').onclick = reply_click;
document.getElementById('3').onclick = reply_click;
</script>
খাঁটি জাভাস্ক্রিপ্ট ব্যবহার: আমি জানি এটি দেরি হয়ে গেছে তবে ভবিষ্যতে লোকেরা এটি যে সাহায্য করতে পারে তা হতে পারে:
এইচটিএমএল অংশে:
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
জাভাস্কিপ্ট কন্ট্রোলারে:
function reply_click()
{
alert(event.srcElement.id);
}
এইভাবে জাভাস্ক্রিপ্ট ফাংশন কল করার সময় আমাদের এলিমেন্টের 'আইডি' আবদ্ধ করতে হবে না।
thisপ্যারামিটার হিসাবে পাস করে এটি ঘিরে কাজ করেছি onClick(আসলে, অনক্লিক নয় তবে অনচেনজ ব্যবহার করা, এটিই কি সমস্যা?)। আমি কিছুটা পরীক্ষা করে দেখেছি এবং এই eventভেরিয়েবলটি প্রায় ঘুরে বেড়াতে গিয়ে অনেক বিভ্রান্তি আছে বলে মনে হচ্ছে - এটি কি "অন্তর্নিহিত" পরামিতি বা এটি কি যুক্তি হিসাবে স্পষ্ট করে বলতে হবে (যেমন function reply_click(event), আমি এটিও দেখেছি) কিছু লোকেশন)? এটি কেবল ইভেন্টের শ্রোতাদের addEventListener... এর মাধ্যমে অর্পণ করার সময় কি পাওয়া যায় ? আমি প্রায় খেলেছি, কিন্তু এটি কাজ করতে পারে না।
(আমি মনে করি idগুণটি একটি চিঠি দিয়ে শুরু করা দরকার wrong ভুল হতে পারে))
আপনি ইভেন্ট প্রতিনিধি দলের জন্য যেতে পারেন ...
<div onClick="reply_click()">
<button id="1"></button>
<button id="2"></button>
<button id="3"></button>
</div>
function reply_click(e) {
e = e || window.event;
e = e.target || e.srcElement;
if (e.nodeName === 'BUTTON') {
alert(e.id);
}
}
... তবে এর জন্য আপনাকে ন্যাকামি ইভেন্টের মডেলটির সাথে তুলনামূলক স্বাচ্ছন্দ্য বোধ করা দরকার।
eযুক্তিটি স্বয়ংক্রিয়ভাবে উত্পন্ন হয়। যদি তা না হয় তবে আমাদের অবশ্যই আই 6-8 এর সাথে ডিল করতে হবে, যা পরিবর্তে সেই দরকারী অবজেক্টের মাধ্যমে সরবরাহ করে window.event।
<button id="1" class="clickMe"></button>
<button id="2" class="clickMe"></button>
<button id="3" class="clickMe"></button>
<script>
$('.clickMe').click(function(){
alert(this.id);
});
</script>
সাধারণত ইনলাইন জাভাস্ক্রিপ্ট এড়ানোর পরামর্শ দেওয়া হয় তবে কীভাবে এটি করা যায় তার উদাহরণ খুব কমই পাওয়া যায়।
এখানে বোতামগুলিতে ইভেন্টগুলি সংযুক্ত করার আমার উপায়।
সাধারণ onClickবৈশিষ্ট্যের সাথে তুলনামূলকভাবে প্রস্তাবিত পদ্ধতির তুলনায় আর কতক্ষণ আমি পুরোপুরি খুশি নই ।
<button class="btn">Button</button>
<script>
let OnEvent = (doc) => {
return {
on: (event, className, callback) => {
doc.addEventListener('click', (event)=>{
if(!event.target.classList.contains(className)) return;
callback.call(event.target, event);
}, false);
}
}
};
OnEvent(document).on('click', 'btn', function (e) {
window.console.log(this, e);
});
</script>
<!DOCTYPE html>
<html>
<head>
<script>
(function(doc){
var hasClass = function(el,className) {
return el.classList.contains(className);
}
doc.addEventListener('click', function(e){
if(hasClass(e.target, 'click-me')){
e.preventDefault();
doSomething.call(e.target, e);
}
});
})(document);
function insertHTML(str){
var s = document.getElementsByTagName('script'), lastScript = s[s.length-1];
lastScript.insertAdjacentHTML("beforebegin", str);
}
function doSomething(event){
console.log(this.id); // this will be the clicked element
}
</script>
<!--... other head stuff ...-->
</head>
<body>
<!--Best if you inject the button element with javascript if you plan to support users with javascript disabled-->
<script>
insertHTML('<button class="click-me" id="btn1">Button 1</button>');
</script>
<!--Use this when you don't care about broken buttons when javascript is disabled.-->
<!--buttons can be used outside of forms https://stackoverflow.com/a/14461672/175071 -->
<button class="click-me" id="btn2">Button 2</button>
<input class="click-me" type="button" value="Button 3" id="btn3">
<!--Use this when you want to lead the user somewhere when javascript is disabled-->
<a class="click-me" href="/path/to/non-js/action" id="btn4">Button 4</a>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
(function(doc){
var cb_addEventListener = function(obj, evt, fnc) {
// W3C model
if (obj.addEventListener) {
obj.addEventListener(evt, fnc, false);
return true;
}
// Microsoft model
else if (obj.attachEvent) {
return obj.attachEvent('on' + evt, fnc);
}
// Browser don't support W3C or MSFT model, go on with traditional
else {
evt = 'on'+evt;
if(typeof obj[evt] === 'function'){
// Object already has a function on traditional
// Let's wrap it with our own function inside another function
fnc = (function(f1,f2){
return function(){
f1.apply(this,arguments);
f2.apply(this,arguments);
}
})(obj[evt], fnc);
}
obj[evt] = fnc;
return true;
}
return false;
};
var hasClass = function(el,className) {
return (' ' + el.className + ' ').indexOf(' ' + className + ' ') > -1;
}
cb_addEventListener(doc, 'click', function(e){
if(hasClass(e.target, 'click-me')){
e.preventDefault ? e.preventDefault() : e.returnValue = false;
doSomething.call(e.target, e);
}
});
})(document);
function insertHTML(str){
var s = document.getElementsByTagName('script'), lastScript = s[s.length-1];
lastScript.insertAdjacentHTML("beforebegin", str);
}
function doSomething(event){
console.log(this.id); // this will be the clicked element
}
</script>
<!--... other head stuff ...-->
</head>
<body>
<!--Best if you inject the button element with javascript if you plan to support users with javascript disabled-->
<script type="text/javascript">
insertHTML('<button class="click-me" id="btn1">Button 1</button>');
</script>
<!--Use this when you don't care about broken buttons when javascript is disabled.-->
<!--buttons can be used outside of forms https://stackoverflow.com/a/14461672/175071 -->
<button class="click-me" id="btn2">Button 2</button>
<input class="click-me" type="button" value="Button 3" id="btn3">
<!--Use this when you want to lead the user somewhere when javascript is disabled-->
<a class="click-me" href="/path/to/non-js/action" id="btn4">Button 4</a>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
(function($){
$(document).on('click', '.click-me', function(e){
doSomething.call(this, e);
});
})(jQuery);
function insertHTML(str){
var s = document.getElementsByTagName('script'), lastScript = s[s.length-1];
lastScript.insertAdjacentHTML("beforebegin", str);
}
function doSomething(event){
console.log(this.id); // this will be the clicked element
}
</script>
<!--... other head stuff ...-->
</head>
<body>
<!--Best if you inject the button element with javascript if you plan to support users with javascript disabled-->
<script type="text/javascript">
insertHTML('<button class="click-me" id="btn1">Button 1</button>');
</script>
<!--Use this when you don't care about broken buttons when javascript is disabled.-->
<!--buttons can be used outside of forms https://stackoverflow.com/a/14461672/175071 -->
<button class="click-me" id="btn2">Button 2</button>
<input class="click-me" type="button" value="Button 3" id="btn3">
<!--Use this when you want to lead the user somewhere when javascript is disabled-->
<a class="click-me" href="/path/to/non-js/action" id="btn4">Button 4</a>
</body>
</html>
ডকুমেন্টটি প্রস্তুত হওয়ার আগে আপনি এটি চালাতে পারেন, বোতামগুলিতে ক্লিক করা কাজ করবে কারণ আমরা ইভেন্টটি নথির সাথে সংযুক্ত করি।
এখানে একটি হল jsfiddle
কিছু অদ্ভুত কারণে insertHTMLফাংশন এটা কাজ করে না যদিও এটি আমার সব ব্রাউজারে কাজ করে।
আপনি যদি এটির কমতিগুলি মনে করেন না তবে আপনি সর্বদা এটির insertHTMLসাথে প্রতিস্থাপন করতে document.writeপারেন
<script>
document.write('<button class="click-me" id="btn1">Button 1</button>');
</script>
সূত্র:
আপনি যদি অনক্লিক ফাংশনে কোনও আর্গুমেন্ট পাস করতে না চান event.targetতবে ক্লিক করা উপাদানটি পেতে কেবল ব্যবহার করুন :
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
function reply_click()
{
// event.target is the element that is clicked (button in this case).
console.log(event.target.id);
}
খাঁটি জাভাস্ক্রিপ্টের সাহায্যে আপনি নিম্নলিখিতটি করতে পারেন:
var buttons = document.getElementsByTagName("button");
var buttonsCount = buttons.length;
for (var i = 0; i < buttonsCount; i += 1) {
buttons[i].onclick = function(e) {
alert(this.id);
};
}
এটি জেএসফিডেলে চেক করুন
আপনি কেবল এটি এইভাবে করতে পারেন:
<input type="button" id="1234" onclick="showId(this.id)" value="click me to show my id"/>
<script type="text/javascript">
function showId(obj) {
var id=obj;
alert(id);
}
id=obj;এবং সবে আছেalert(obj);
দুঃখিত এটির একটি দেরী উত্তর তবে আপনি যদি এটি করেন তবে এটি সত্যই দ্রুত: -
$(document).ready(function() {
$('button').on('click', function() {
alert (this.id);
});
});
এটি ক্লিক করা যে কোনও বোতামের আইডি পায়।
আপনি যদি কোনও নির্দিষ্ট জায়গায় ক্লিক করা বোতামের মান পেতে চান তবে এগুলি কেবল পাত্রে রাখুন
<div id = "myButtons"> buttons here </div>
এবং কোডটি এতে পরিবর্তন করুন: -
$(document).ready(function() {
$('.myButtons button').on('click', function() {
alert (this.id);
});
});
আশা করি এটা কাজে লাগবে
এটি ক্লিক করা হয়েছে এমন উপাদানটির আইডি লগ করবে: অ্যাডফিল্ডস।
<button id="addFields" onclick="addFields()">+</button>
<script>
function addFields(){
console.log(event.toElement.id)
}
</script>