जिस बटन पर क्लिक किया जा रहा है, उसकी आईडी कैसे मिलेगी?
<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
(मेरे लिए, फ़ायरफ़ॉक्स और IE दोनों इसे फेंक रहे थे), यह एक महान समाधान है जो सभी तीन प्रमुख ब्राउज़रों में काम करता है।
सामान्य तौर पर, चीजों को व्यवस्थित रखना आसान होता है यदि आप अपना कोड और अपना मार्कअप अलग करते हैं। अपने सभी तत्वों को परिभाषित करें, और फिर अपने जावास्क्रिप्ट अनुभाग में, उन तत्वों पर किए जाने वाले विभिन्न कार्यों को परिभाषित करें।
जब कोई ईवेंट हैंडलर कहा जाता है, तो उसे उस तत्व के संदर्भ में बुलाया जाता है, जिस पर क्लिक किया गया था। तो, पहचानकर्ता यह आपके द्वारा क्लिक किए गए 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>
PURE JAVASCRIPT का उपयोग करना: मुझे पता है कि यह देर हो चुकी है लेकिन भविष्य के लोगों के लिए यह मदद कर सकता है:
HTML भाग में:
<button id="1" onClick="reply_click()"></button>
<button id="2" onClick="reply_click()"></button>
<button id="3" onClick="reply_click()"></button>
Javascipt नियंत्रक में:
function reply_click()
{
alert(event.srcElement.id);
}
इस तरह हमें जावास्क्रिप्ट फ़ंक्शन को कॉल करने के समय तत्व की 'आईडी' को बांधने की ज़रूरत नहीं है।
this
पैरामीटर के रूप में काम किया onClick
(वास्तव में, onClick लेकिन onChange का उपयोग नहीं करते, क्या यह समस्या है?)। मैंने थोड़ा सा भी जाँच किया है और इस event
चर के बारे में बहुत भ्रम होने लगता है - क्या यह एक "अंतर्निहित" पैरामीटर है या क्या इसे तर्क के रूप में स्पष्ट रूप से कहा जाना चाहिए (अर्थात function reply_click(event)
, जिसे मैंने भी देखा है कुछ स्थान)? क्या यह केवल तब उपलब्ध होता है जब ईवेंट श्रोता के माध्यम से असाइन किया जाता है addEventListener
...? मैंने चारों ओर खेला है, लेकिन यह काम करने के लिए नहीं मिल सका।
(मुझे लगता है कि id
विशेषता को एक पत्र के साथ शुरू करने की आवश्यकता है। गलत हो सकता है।)
आप घटना के प्रतिनिधिमंडल के लिए जा सकते हैं ...
<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
तर्क स्वतः उत्पन्न होता है। यदि ऐसा नहीं है, तो हमें IE6-8 के साथ काम करना चाहिए, जो इसके बजाय उस उपयोगी वस्तु को प्रदान करता है window.event
।
यह आमतौर पर इनलाइन जावास्क्रिप्ट से बचने के लिए अनुशंसित है, लेकिन शायद ही कभी इसका उदाहरण है कि यह कैसे करना है।
यहाँ घटनाओं को बटन से जोड़ने का मेरा तरीका है।
मैं एक साधारण 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);
});
});
आशा है कि ये आपकी मदद करेगा
यह उस तत्व की आईडी को लॉग करेगा जिसे क्लिक किया गया है: addFields।
<button id="addFields" onclick="addFields()">+</button>
<script>
function addFields(){
console.log(event.toElement.id)
}
</script>