2011-02-01 13 views
45

क्या यह जांचना संभव है कि किसी ऑब्जेक्ट का सीएसएस display == block या none जावास्क्रिप्ट का उपयोग कर रहा है?क्या आप जावास्क्रिप्ट के साथ ऑब्जेक्ट का सीएसएस डिस्प्ले देख सकते हैं?

console.log(document.getElementById('someIDThatExists').style.display); 

आप एक स्ट्रिंग मान दे देंगे:

उत्तर

46

तत्वों एक style संपत्ति है जो आपको बताएगा कि आप क्या चाहते हैं, अगर शैली इनलाइन या जावास्क्रिप्ट के साथ घोषित किया गया था की है।

sdleihssirhc के रूप में नीचे कहते हैं, अगर तत्व के display विरासत में मिला जा रहा है या एक CSS नियम द्वारा निर्दिष्ट किया जा रहा है, तो आप इसका परिकलित शैली पाने के लिए की आवश्यकता होगी:

return element.currentStyle ? element.currentStyle.display : 
          getComputedStyle(element, null).display; 
+0

क्या होगा यदि इसमें सीएसएस इनलाइन नहीं है? – jscripter

+2

सादगी के लिए, क्यों न केवल गणना की शैली प्राप्त करें? –

+3

'वर्तमान स्टाइल' क्या है? इसके बारे में कभी नहीं सुना, 'document.body.currentStyle' भी चेक किया और कुछ भी नहीं मिला (आश्चर्यचकित नहीं था) – vsync

5

हाँ।

var displayValue = document.getElementById('yourid').style.display; 
22

jQuery के लिए, क्या आपको इसका मतलब है?

$('#object').css('display'); 

आप इस तरह यह जांच कर सकते हैं:

if($('#object').css('display') === 'block') 
{ 
    //do something 
} 
else 
{ 
    //something else 
} 
+3

उत्तर को अधिक जटिल करने से बचें। मुझे पता है कि jQuery कुछ हद तक मानक बन रहा है, लेकिन तत्व की डिस्प्ले शैली की जांच करने के लिए सिर्फ एक संपूर्ण ढांचा जोड़ने का कोई कारण नहीं है। – zzzzBov

+7

हाँ, लेकिन मैंने ऐसा इसलिए किया क्योंकि हर किसी ने कच्चे जावास्क्रिप्ट का जवाब दिया, इसलिए यदि वह jquery का उपयोग कर रहा था लेकिन निर्दिष्ट नहीं किया गया तो –

57

तो शैली इनलाइन या जावास्क्रिप्ट के साथ घोषित किया गया था, तो आप सिर्फ style वस्तु को प्राप्त कर सकते हैं: अन्यथा

return element.style.display === 'block'; 

, आप 'गणना की शैली प्राप्त करनी होगी, और ब्राउज़र असंगतताएं हैं। आईई एक सरल currentStyle ऑब्जेक्ट का उपयोग करता है, लेकिन हर किसी के लिए एक विधि का उपयोग करता है:

return element.currentStyle ? element.currentStyle.display : 
           getComputedStyle(element, null).display; 

null फ़ायरफ़ॉक्स में आवश्यक है।

+0

पोस्ट में कुछ उपयोग किया जाना चाहिए, यह इस मामले में == नहीं होना चाहिए? –

+0

@ काई ट्रिपल बराबर टाइप जबरदस्ती नहीं करता है। [क्रॉकफ़ोर्ड बताता है क्यों] (http://javascript.crockford.com/code.html), "' === 'और'! == 'ऑपरेटर" नामक अनुभाग में। – sdleihssirhc

+0

यह बहुत दिलचस्प है। मजेदार है कि इस तरह कुछ ऐसा प्रोग्रामिंग के इतने सालों बाद नोटिस से बच सकता है। मैंने हमेशा सुझाव दिया कि === सख्त बूलियन था। जानकार अच्छा लगा। –

0

आप उदाहरण jQuery के लिए के साथ इसे देख सकते हैं:

$("#elementID").css('display'); 

यह इस तत्व की प्रदर्शन संपत्ति के बारे में जानकारी के साथ स्ट्रिंग वापस आ जाएगी।

0

शुद्ध जावास्क्रिप्ट के साथ आप style.display संपत्ति देख सकते हैं। jQuery के साथ आप $('#id').css('display')

2

उपयोग कर सकते हैं पता लगाने के लिए अगर यह सादा जावास्क्रिप्ट के साथ दिखाई दे रहा है, यह देखना होगा कि प्रदर्शन संपत्ति 'कोई नहीं' ('ब्लॉक' के लिए की जांच नहीं करते, यह भी रिक्त या 'इनलाइन' हो सकता है और अभी भी है दिखाई देना):

var isVisible = (elt.style.display != "none"); 

आप jQuery का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं इस के बजाय:

var isVisible = $elt.is(":visible"); 
2

बेसिक जावास्क्रिप्ट:

if (document.getElementById("elementId").style.display == 'block') { 
    alert('this Element is block'); 
} 
8

यह उत्तर बिल्कुल वही नहीं है जो आप चाहते हैं, लेकिन यह कुछ मामलों में उपयोगी हो सकता है।

var hasDisplayNone = (element.offsetHeight === 0 && element.offsetWidth === 0); 

संपादित करें:: क्यों इस सीएसएस display संपत्ति के प्रत्यक्ष जांच की तुलना में बेहतर हो सकता है जैसा कि आप जानते तत्व कुछ आयाम है जब प्रदर्शित, आप भी इस का उपयोग कर सकते हैं? क्योंकि आपको सभी मूल तत्वों की जांच करने की आवश्यकता नहीं है।अगर कुछ मूल तत्वों में display: none है, तो इसके बच्चे भी छिपे हुए हैं लेकिन अभी भी element.style.display !== 'none' है।

+0

दरअसल, यह उपयोगी है। –

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

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