2010-10-11 20 views
155

क्या एक से अधिक जावास्क्रिप्ट फ़ंक्शन को कॉल करने के लिए onclick HTML विशेषता का उपयोग करने का कोई तरीका है?ऑनक्लिक ईवेंट में एकाधिक जावास्क्रिप्ट फ़ंक्शंस को कैसे कॉल करें?

+0

संभावित डुप्लिकेट [क्या मेरे पास एक तत्व में दो जावास्क्रिप्ट ऑनक्लिक घटनाएं हो सकती हैं?] (Http://stackoverflow.com/questions/2881307/can-i-have-two-javascript-onclick-events-in-one- तत्व) –

उत्तर

276
onclick="doSomething();doSomethingElse();" 

लेकिन वास्तव में, आप बिल्कुल नहीं onclick उपयोग कर और अपने जावास्क्रिप्ट कोड के माध्यम से डोम नोड के लिए ईवेंट हैंडलर संलग्न से बेहतर कर रहे हैं। इसे unobtrusive javascript के रूप में जाना जाता है।

+1

अविभाज्य जेएस के संदर्भ के लिए धन्यवाद, मैं पहले इस पर आया हूं, और मुझे आलसी जेएस लिखने से बचना चाहिए क्योंकि मैं आलसी हूं! xD – Qcom

+6

कोई जांच नहीं ... मैं भी jQuery की अत्यधिक अनुशंसा करता हूं जो वास्तव में आपके अविभाज्य लक्ष्य के साथ आपकी मदद करेगा। आप आसानी से ईवेंट हैंडलर को डीओएम तत्वों से जोड़ सकते हैं और सभी को अविभाज्य रूप से अधिक कर सकते हैं। मैंने इसे 2 साल तक इस्तेमाल किया है और कभी पीछे नहीं देखा है। – brad

+4

यदि ऑनक्लिक में कोई कार्रवाई करने में विफल रहता है, तो पूरी चीज डोमिनोज़ श्रृंखला की तरह गिरती है और ऑनक्लिक काम करने में विफल रहता है। –

4

निश्चित रूप से, बस इसे कई श्रोताओं को बांधें।

Short cutting with jQuery

$("#id").bind("click", function() { 
 
    alert("Event 1"); 
 
}); 
 
$(".foo").bind("click", function() { 
 
    alert("Foo class"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="foo" id="id">Click</div>

+3

ने कभी भी jQuery – hunter

+0

@hunter का उल्लेख नहीं किया: मैं jQuery के साथ छोटा काटने वाला था। मुझे मूल घटना श्रोता कोड बिल्कुल याद नहीं है।आप मार्को का उल्लेख भी कर सकते हैं, लेकिन एक ईवेंट श्रोता का उपयोग करना बेहतर है। –

+1

मूल प्रश्न का उत्तर नहीं दिया हो सकता है, लेकिन चूंकि मैं jQuery का उपयोग कर रहा हूं, इसलिए उसने मेरा उत्तर दिया। –

57

1 समारोह के साथ एक लिंक someFunc()

function someFunc() { 
    showAlert(); 
    validate(); 
    anotherFunction(); 
    YetAnotherFunction(); 
} 
+2

आईएमएचओ बर्बाद कर दिया, यह सच प्रोग्रामर का दृष्टिकोण है। –

+0

@ b1nary.atr0phy nope। प्रोग्रामर तरीका जब उपयोगकर्ता के पास जावास्क्रिप्ट नहीं है तो href = "" विशेषता जोड़ना है। फिर, जावास्क्रिप्ट के साथ (ताकि आप जानते हैं कि उपयोगकर्ता इसका समर्थन करता है) आप href को हटाते हैं, और ईवेंट श्रोताओं को ईवेंट में जोड़ते हैं। इस तरह, यदि आपके कोड का एक और मॉड्यूल एक ही क्लिक को सुनता है, तो यह ओवरराइट नहीं होता है, या आपके कोड को ओवरराइट नहीं करता है। पढ़ें: https://developer.mozilla.org/en-US/docs/Web/API/Event – gcb

+3

यदि आपके पास फ़ंक्शंस में कोई तर्क पारित किया गया है, तो यह ठीक से काम नहीं कर सकता है, खासकर यदि आप सर्वर से उन तर्कों को उत्पन्न करते हैं- साइड भाषा सर्वर और क्लाइंट दोनों पर सभी संभावित पुनरावृत्तियों का परीक्षण करने के बजाय सर्वर-साइड भाषा के भीतर फ़ंक्शंस (किसी भी तर्क के साथ) को जोड़कर कोड बनाना/बनाए रखना आसान होगा। – Siphon

9

से

<a href="#" onclick="someFunc()">Click me To fire some functions</a> 

अनेक कार्यों का फायरिंग परिभाषित मैं एक समारोह को लिंक करने का element.addEventListener विधि का प्रयोग करेंगे। उस फ़ंक्शन से आप कई फ़ंक्शन कॉल कर सकते हैं।

लाभ जो मैं एक समारोह में किसी ईवेंट को बाध्य करने में देखता हूं और फिर कई कार्यों को बुलाता हूं यह है कि आप कुछ त्रुटि जांच कर सकते हैं, कुछ और बयान दें ताकि कुछ कार्य केवल तभी प्राप्त किए जाएं जब कुछ मानदंड पूरा हो जाएं।

26

यह अगर आप केवल जावास्क्रिप्ट और नहीं jQuery का उपयोग कर रहे कोड की आवश्यकता है

var el = document.getElementById("id"); 
el.addEventListener("click", function(){alert("click1 triggered")}, false); 
el.addEventListener("click", function(){alert("click2 triggered")}, false); 
+6

यह सही उत्तर और सही तरीके से होना चाहिए। – Fusion

0

आप एक में सभी कार्यों की रचना और them.Libraries फोन Ramdajs की तरह एक में अनेक कार्यों का रचना के लिए एक समारोह है सकते हैं ।

<a href="#" onclick="R.compose(fn1,fn2,fn3)()">Click me To fire some functions</a> 

या आप js फ़ाइल में एक अलग समारोह के रूप में रचना डाल दिया और फोन यह

const newFunction = R.compose(fn1,fn2,fn3); 


<a href="#" onclick="newFunction()">Click me To fire some functions</a> 
+0

, आप रामदा द्वारा जुनूनी हैं। –

0

आप एक से अधिक केवल कोड से भले ही आप दूसरे onclick गुण है एचटीएमएल यह हो जाता है में जोड़ सकते हैं कर सकते हैं अनदेखा किया गया, और click2 triggered मुद्रित नहीं होता है, आप mousedown पर कार्रवाई को जोड़ सकते हैं लेकिन यह केवल एक कामकाज है।

var element = document.getElementById("multiple_onclicks"); 
 
element.addEventListener("click", function(){console.log("click3 triggered")}, false); 
 
element.addEventListener("click", function(){console.log("click4 triggered")}, false);
<button id="multiple_onclicks" onclick='console.log("click1 triggered");' onclick='console.log("click2 triggered");' onmousedown='console.log("click mousedown triggered");' > Click me</button>

आप के रूप में की घटनाओं अप पाइल कर सकते हैं देखभाल करने के लिए की जरूरत है, और यदि आप कई घटनाओं आप जोड़ना होगा:

तो सबसे अच्छा करने के लिए उन में के रूप में कोड से जोड़ने है वे दौड़ने के आदेश की गिनती खो सकते हैं।

संबंधित मुद्दे