मैं अपने टॉक इवेंट से SayIt फ़ंक्शन को कॉल करने के लिए कैसे प्राप्त कर सकता हूं। मैं रात भर इससे जूझता रहा।

$(document).ready(function () {


   var sayIt = (function() {
        alert("I can now say something.");
    })();


    $("#talk").blur(function(){

       sayIt(); //<-- Uncaught TypeError: sayIt is not a function
    });

});
1
Emeka Obianom 30 मार्च 2018, 08:43

5 जवाब

सबसे बढ़िया उत्तर

sayIt एक function नहीं है क्योंकि आपने फ़ंक्शन को सेल्फ़ इनवोकिंग फ़ंक्शन के रूप में घोषित किया है और sayIt केवल इसके द्वारा लौटाए गए मान को संग्रहीत करता है।

$(document).ready(function () {


    var sayIt = function() {
        alert("I can now say something.");
    };

    sayIt(); // it you want to call it once

    $("#talk").blur(function(){

       sayIt(); //<-- Uncaught TypeError: sayIt is not a function
    });

});
4
Shubham Khatri 30 मार्च 2018, 05:45

आप स्वयं आमंत्रण फ़ंक्शन का उपयोग कर रहे हैं, यह स्वचालित रूप से कॉल करता है। तो अगर आपको इस फ़ंक्शन को कॉल करने की आवश्यकता है तो आपको अपने कोड से () को हटा देना चाहिए ताकि कोड ऐसा दिखे -

var sayIt = function() {
    alert("I can now say something.");
});

लेकिन अगर आप () के साथ कॉल करना चाहते हैं तो आपको क्लोजर रणनीति का उपयोग करने की आवश्यकता है जैसे -

var sayIt = (function() {

    return function () {
        alert("I can now say something.");
    };
})();
0
Pankaj Bisht 30 मार्च 2018, 05:54

SayIt इस मामले में एक समारोह नहीं है। यह एक आत्म आह्वान समारोह है।

आपको कहने के लिए कोड को बदलने की जरूरत है:

var sayIt = function () {
  alert("I can now ay something.");
}

तभी आप इसे ब्लर इवेंट से कह सकते हैं।

1
varunvs 30 मार्च 2018, 05:47

आपके प्रश्न की कुंजी सेल्फ इनवोक फंक्शन है। जब आप डालते हैं (); फ़ंक्शन घोषणा समाप्त होने के बाद इसका मतलब है कि फ़ंक्शन स्वयं कॉल करेगा। आप के रूप में कार्य बदलें-

$(document).ready(function () {
   // declaration of function //
   var sayIt = (function() {
    alert("I can now say something.");
   });

    $("#talk").blur(function(){
       sayIt(); //this will work fine
    });

 });
2
user9467714user9467714 30 मार्च 2018, 06:15

आप sayIt में सेल्फ़ इनवोकेशन फ़ंक्शन का उपयोग कर रहे हैं, इसलिए यह पेज लोड होने पर स्वतंत्र रूप से निष्पादित होगा और टेक्स्ट को अलर्ट करेगा। लेकिन जब आईडी talk वाला तत्व धुंधला हो तो आपको सतर्क रहने की आवश्यकता है। तो, उस फ़ंक्शन को बंद कर दें और यह अपेक्षा के अनुरूप काम करता है।

$(document).ready(function () {
   var sayIt = function() {
        alert("I can now say something.");
    };
    $("#talk").blur(function(){
       sayIt();
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='talk' />
3
Ankit Agarwal 30 मार्च 2018, 05:45