जावास्क्रिप्ट के साथ तत्व सीएसएस प्रदर्शन की जाँच करें


97

क्या यह जांचना संभव है कि किसी तत्व का सीएसएस display == blockया noneजावास्क्रिप्ट का उपयोग कर रहा है या नहीं ?

जवाबों:


114

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

return window.getComputedStyle(element, null).display;

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

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

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


2
क्या होगा अगर इसमें इनलाइन css नहीं है?
jscripter

5
सादगी के लिए, हमेशा केवल गणना की गई शैली ही क्यों?
cade galt

12
क्या है currentStyle? इसके बारे में कभी नहीं सुना, यह भी जाँच की document.body.currentStyleऔर कुछ भी नहीं मिला (आश्चर्य नहीं)
vsync

1
@vsync (और भविष्य के संदर्भ के लिए) एमडीएन के अनुसार , यह इंटरनेट एक्सप्लोरर के पुराने संस्करण की मालिकाना संपत्ति है।
user202729

2
टिप्पणियों के लिए धन्यवाद। उत्तर आधुनिक वेब के लिए अपडेट किया गया।
डान डेविस ब्रैकेट

78

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

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

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

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

nullFirefox संस्करण 3 और नीचे में आवश्यक था।


क्या इस मामले में == नहीं होना चाहिए?
काई क्विंग

@Kai ट्रिपल बराबर टाइप ज़बरदस्ती नहीं करता है। क्रॉकफोर्ड बताते हैं कि , " ===और !==ऑपरेटरों " नामक अनुभाग में क्यों
१५:१५ बजे

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

3
@ केकई: यहाँ के ===बजाय उपयोग करने में कोई समस्या नहीं है ==, लेकिन समान रूप से इसका कोई फायदा भी नहीं है। दोनों ऑपरेंड को स्ट्रिंग्स होने की गारंटी है, इसलिए दोनों ऑपरेटर्स बिल्कुल एक जैसा कदम उठाते हैं।
टिम डाउन

1
@ ह्पीपिट्रिल और लगभग 10 साल बाद (2019-10-27) अभी भी समस्याएं हैं। चेक क्या MDN रिपोर्ट
फेलिप अल्मिडा एक

37

JQuery के लिए, आप इस तरह का मतलब है?

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

आप इसे इस तरह से देख सकते हैं:

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

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

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

18

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

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

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


वास्तव में, यह उपयोगी है।
जोनाटस वाकर


5

मूल जावास्क्रिप्ट:

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

2

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

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

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

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

0

शुद्ध जावास्क्रिप्ट के साथ आप style.displayसंपत्ति की जांच कर सकते हैं। JQuery के साथ आप उपयोग कर सकते हैं$('#id').css('display')


-1

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

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.