हाय स्टैक ओवरफ्लोयन,

जब मैं उसी Click foo लिंक पर क्लिक करता हूं तो मैं Click foo लिंक को छिपाना चाहता हूं।

मेरे पास निम्न कोड है:

<dom-module>
    <div id="foo">
        <a href="#" onclick="toggle_visibility('foo');">Click foo</a>
    </div>

<script>
    Polymer({
        is: 'test-file',

        toggle_visibility: function(id) {
            var e = document.getElementById(id);

            if (e.style.display === "none") {
                e.style.display = "block";
            } else {
                e.style.display = "none";
            }
        });
</script>
</dom-module>

जब मैं Click foo लिंक पर क्लिक करता हूं तो मुझे कंसोल टैब में त्रुटि मिलती है:

Uncaught ReferenceError: toggle_visibility is not defined at HTMLAnchorElement.onclick

मैं चाहता हूं कि Click foo लिंक पर क्लिक करने पर लिंक छिप जाए

क्या कोई कृपया मदद कर सकता है?

अग्रिम में धन्यवाद

1
SaAsh Techs 21 अक्टूबर 2019, 08:08

1 उत्तर

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

पॉलिमर में आप घोषणात्मक रूप से on- + ईवेंट नाम का उपयोग करके ईवेंट हैंडलर जोड़ते हैं। तो आपके मामले में यह on-click होगा, onclick नहीं।

साथ ही, आपको एक विधि के लिए नाम प्रदान करने की आवश्यकता होगी, न कि उसे कॉल करने के लिए। तो आपका a टैग कुछ ऐसा बन जाएगा:

<a href="#" on-click="toggle_visibility">Click foo</a>

चूंकि यह एक पैरामीटर पास नहीं करता है, आप एक और तरीका ढूंढ सकते हैं, जैसे data- विशेषता का उपयोग करना, या हो सकता है कि एंकर से संबंध हर बार समान हो, बस इस तथ्य पर भरोसा करें कि div मूल नोड है:

toggle_visibility: function(event) {
    var e = event.currentTarget.parentNode;

    if (e.style.display === "none") {
        e.style.display = "block";
    } else {
        e.style.display = "none";
    }
}

अद्यतन करें: यह भी ध्यान दें कि, यदि आप एक ऐसी विधि का उपयोग करते हैं जो तत्व के लिए प्रदर्शन को टॉगल करने के लिए क्वेरी करेगी, तो आपको दस्तावेज़ स्तर पर नहीं, शैडोडोम को क्वेरी करने की सबसे अधिक संभावना होगी। इसलिए

var e = document.getElementById(id);

बन जाएगा:

var e = this.shadowRoot.getElementById(id);
0
mishu 6 नवम्बर 2019, 15:57