दिलचस्प पोस्ट
Django दृश्य में एक पीडीएफ फाइल कैसे दिखाती है फ़्लैश / एक्शन स्क्रिप्ट 3.0 में स्टैकट्रेस कैसे html एट्रिब्यूट्स के अंदर उद्धरण चिह्नों से बचने के लिए? jQuery के वैध प्लगइन – एक सरल कस्टम नियम बनाने के लिए कैसे? JTable कॉलम की चौड़ाई को ऑटो आकार बदलना क्या जावास्क्रिप्ट में गतिशील गेटर्स / सेटर्स लागू करना संभव है? HTML एम्बेडेड पीडीएफ iframe आईओएस 4.2.1 विकास एसडीके में libXcodeDebuggerSupport.dylib लापता है कैसे jQuery का उपयोग कर एक html पृष्ठ में पहली तालिका की पहली पंक्ति चुनने के लिए? भिन्न गहराई के नेस्टेड शब्दकोश का मूल्य अद्यतन करें पतन और विस्तार टैब jquery / सरल accordion Windows पर मेवेन 2 के तहत जावा हीप स्पेस सेट करना एक AJAX कॉल के साथ काम करने के लिए टैग प्राप्त करने की कोशिश कर रहा है IPhone के लिए स्वचालित परीक्षण ओपनसीवी 2.4.3 को विजुअल सी ++ 2010 एक्सप्रेस में स्थापित करना

कैसे दिखता है कि तत्व दृश्यमान DOM में मौजूद है?

आप getElementById विधि के उपयोग के बिना अस्तित्व के किसी तत्व का परीक्षण कैसे करते हैं? मैंने संदर्भ के लिए एक लाइव डेमो सेटअप किया है मैं यहां कोड को भी प्रिंट करूंगा:

 <!DOCTYPE html> <html> <head> <script> var getRandomID = function (size) { var str = "", i = 0, chars = "0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ"; while (i < size) { str += chars.substr(Math.floor(Math.random() * 62), 1); i++; } return str; }, isNull = function (element) { var randomID = getRandomID(12), savedID = (element.id)? element.id : null; element.id = randomID; var foundElm = document.getElementById(randomID); element.removeAttribute('id'); if (savedID !== null) { element.id = savedID; } return (foundElm) ? false : true; }; window.onload = function () { var image = document.getElementById("demo"); console.log('undefined', (typeof image === 'undefined') ? true : false); // false console.log('null', (image === null) ? true : false); // false console.log('find-by-id', isNull(image)); // false image.parentNode.removeChild(image); console.log('undefined', (typeof image === 'undefined') ? true : false); // false ~ should be true? console.log('null', (image === null) ? true : false); // false ~ should be true? console.log('find-by-id', isNull(image)); // true ~ correct but there must be a better way than this? }; </script> </head> <body> <div id="demo"></div> </body> </html> 

असल में उपरोक्त कोड क्या दर्शाता है कि एक तत्व को एक चर में संग्रहीत किया जाता है और फिर डोम से निकाला जाता है। हालांकि तत्व dom से निकाल दिया गया है, वेरिएबल तत्व को बरकरार रखता है, जैसा कि पहले घोषित किया गया था। दूसरे शब्दों में, यह तत्व का एक जीवित संदर्भ नहीं है, बल्कि एक प्रतिकृति है। नतीजतन, अस्तित्व के लिए वेरिएबल के मूल्य (तत्व) की जाँच से एक अप्रत्याशित परिणाम प्रदान किया जाएगा।

isNull कार्य एक चर से तत्वों के अस्तित्व की जांच करने का मेरा प्रयास है, और यह काम करता है, लेकिन मैं जानना चाहूंगा कि क्या एक ही परिणाम पूरा करने का एक आसान तरीका है।

पुनश्च: मुझे इसमें भी दिलचस्पी है कि जावास्क्रिप्ट चर इस तरह से व्यवहार करते हैं कि अगर कोई इस विषय से संबंधित कुछ अच्छे लेखों को जानता है।

Solutions Collecting From Web of "कैसे दिखता है कि तत्व दृश्यमान DOM में मौजूद है?"

ऐसा लगता है कि कुछ लोग यहां लैंडिंग कर रहे हैं, और केवल जानना चाहते हैं कि एक तत्व मौजूद है (मूल प्रश्न से कुछ अलग है)।

यह ब्राउज़र के किसी भी चयन पद्धति का उपयोग करने और इसे सत्य मान (सामान्यतः) के लिए जांचने के लिए उतना सरल है।

उदाहरण के लिए, यदि मेरे तत्व में "find-me" का एक id था, तो मैं बस इसका इस्तेमाल कर सकता था …

 var elementExists = document.getElementById("find-me"); 

यह या तो तत्व या null संदर्भ वापस करने के लिए spec'd है। यदि आपके पास बूलियन मान होना चाहिए, तो बस टॉस करें !! विधि कॉल से पहले

इसके अलावा, आप तत्वों को खोजने के लिए मौजूद कुछ अन्य तरीकों का उपयोग कर सकते हैं, जैसे कि (सभी document बंद रहने):

  • querySelector() / querySelectorAll()
  • getElementsByClassName()
  • getElementsByName()

इन विधियों में से कुछ NodeList वापस आते हैं, इसलिए अपनी length संपत्ति की जांच सुनिश्चित करें, क्योंकि NodeList एक वस्तु है, और इसलिए सत्य है


वास्तव में यह निर्धारित करने के लिए कि कोई तत्व दृश्यमान DOM (जैसे कि मूल रूप से पूछा गया प्रश्न) के भाग के रूप में मौजूद है, तो सीएसुल्डकैट अपने स्वयं के रोलिंग की तुलना में बेहतर समाधान प्रदान करता है (जैसा कि इस उत्तर में प्रयुक्त होता है)। इसका अर्थ है, DOM तत्वों में contains() विधि का उपयोग करना

आप इसे इस तरह इस्तेमाल कर सकते हैं …

 document.body.contains(someReferenceToADomElement); 

यदि आप उपलब्ध हैं तो आप getElementById() उपयोग क्यों नहीं करेंगे?

इसके अलावा, यहां jQuery के साथ करने का एक आसान तरीका है:

 if ($('#elementId').length > 0) { // exists. } 

और यदि आप तृतीय-पक्ष पुस्तकालयों का उपयोग नहीं कर सकते हैं, तो बस जावास्क्रिप्ट आधार पर रहें:

 var element = document.getElementById('elementId'); if (typeof(element) != 'undefined' && element != null) { // exists. } 

Node.contains DOM API का उपयोग करके, आप पृष्ठ में किसी भी तत्व की उपस्थिति (वर्तमान में डोम में) की आसानी से देख सकते हैं:

 document.body.contains(YOUR_ELEMENT_HERE); 

क्रॉस-ब्राउजर नोट : IE में document ऑब्जेक्ट में एक contains() विधि नहीं है – क्रॉस-ब्राउज़र संगतता सुनिश्चित करने के लिए, इसके बजाय document.body.contains() उपयोग करें

मैं बस:

 if(document.getElementById("myElementId")){ alert("Element exists"); } else { alert("Element does not exist"); } 

मेरे लिए काम करता है और इसके साथ कोई समस्या नहीं है ….

मोज़िला डेवलपर नेटवर्क से

यह फ़ंक्शन यह देखने के लिए जांचता है कि क्या कोई तत्व पृष्ठ के शरीर में है या नहीं जैसा में शामिल है, समावेशी है और निर्धारित करने के लिए यदि शरीर में ही शामिल है, तो इसका मतलब नहीं है InPage इस मामले में स्पष्ट रूप से झूठी वापसी की जाती है।

 function isInPage(node) { return (node === document.body) ? false : document.body.contains(node); } 

नोड वह नोड है जिसे हम में देखना चाहते हैं।

सबसे आसान समाधान baseURI प्रॉपर्टी की जांच करना है, जो केवल तभी सेट किया जाता है जब तत्व को डीओएम में डाला जाता है, और जब इसे निकाल दिया जाता है तो रिक्त स्ट्रिंग में लौटा जाता है।

क्या आप केवल जांच कर सकते हैं कि क्या पैरेंट नोड की संपत्ति शून्य है?

अर्थात

 if(!myElement.parentNode) { //node is NOT on the dom } else { //element is on the dom } 

csuwldcat का समाधान गुच्छा का सबसे अच्छा लगता है, लेकिन यह एक तत्व के साथ सही तरीके से काम करने के लिए थोड़ा बदलाव की आवश्यकता है जो जावास्क्रिप्ट के चलते से भिन्न दस्तावेज़ में है, जैसे कि iframe:

YOUR_ELEMENT.ownerDocument.body.contains(YOUR_ELEMENT);

तत्व की स्वामी दस्तावेज़ का उपयोग नोट करें, जैसा कि सिर्फ सादा ol ' document (जो कि तत्व के स्वामी दस्तावेज़ का उल्लेख नहीं हो सकता है या हो सकता है) के विपरीत है।

टारज़ैबोरो ने एक भी सरल विधि पोस्ट की है जो गैर-स्थानीय तत्वों के साथ भी काम करता है, लेकिन दुर्भाग्य से, यह baseURI प्रॉपर्टी का उपयोग करता है, जो इस समय ब्राउज़रों में समान रूप से कार्यान्वित नहीं है (मैं इसे केवल वेबकिट-आधारित लोगों में काम करने के लिए प्राप्त कर सकता था)। मैं किसी भी अन्य तत्व या नोड गुणों का उपयोग किसी समान रूप में नहीं किया जा सकता था, इसलिए मुझे लगता है कि ऊपर के समाधान के समय जितना अच्छा होता है उतना अच्छा होता है।

jQuery समाधान:

 if ($('#elementId').length) { // element exists, do something... } 

यह मेरे लिए jQuery का उपयोग कर रहा था और $('#elementId')[0] का उपयोग करने के लिए आवश्यक नहीं था।

मुझे यह दृष्टिकोण पसंद आया

 var elem = document.getElementById('elementID'); if( elem )do this else do that 

भी

 var elem = ((document.getElementById('elemID')) ? true:false); if( elem ) do this else do that 

JQuery के साथ सरल समाधान

 $('body').find(yourElement)[0] != null 

आप jQuery.contains भी उपयोग कर सकते हैं, जो यह जांचता है कि क्या कोई तत्व दूसरे तत्व का वंशज है। मैंने document में मूल तत्व के रूप में खोज की है क्योंकि पृष्ठ पर मौजूद कोई भी तत्व DOM document वंशज है।

 jQuery.contains( document, YOUR_ELEMENT)