2015-02-22 5 views
8

मैं क्यों यह एकजावास्क्रिप्ट तत्व शैली

<div class = "overlay"> 
    fdsfsd 
</div> 
.overlay{ 
    width: 100px; 
    height: 200px; 
    background-color:red; 
} 
alert(document.getElementsByClassName("overlay")[0].style.width); 

कुछ भी नहीं चेतावनी नहीं है उत्सुक हूँ। बेशक मैं <div style = "width:100px"> लिख सकता हूं तो हमेशा कुछ ठीक काम करता है, लेकिन यह मेरे लिए अच्छा नहीं है, मुझे सीएसएस की आवश्यकता है। यहां आप jsfiddle demo

तो सटीक प्रश्न यह है कि: यह कोड div की चौड़ाई को सतर्क क्यों नहीं कर रहा है और सीएसएस द्वारा चौड़ाई दी जाती है तो इसे कैसे चेतावनी दी जाती है?

उत्तर

5

जावास्क्रिप्ट .style केवल तत्व पर इनलाइन शैलियों से संबंधित है।

Documentation देखें।

यदि आप किसी तत्व की चौड़ाई प्राप्त करना चाहते हैं तो आपको offsetWidth का उपयोग करना चाहिए।

document.getElementsByClassName("overlay")[0].offsetWidth 

http://jsfiddle.net/9kwap3zy/7/

10

के रूप में उल्लेख किया अन्यत्र, समस्या यह है कि HTMLElement.stylestyle attr से मान प्राप्त करता है तत्व का ibute; आप सीएसएस के साथ अपनी शैली के रूप में स्थापित कर रहे हैं, आप के बजाय window.getComputedStyle(element, null).width उपयोग करने की आवश्यकता:

var elem = document.getElementsByClassName("overlay")[0], 
 
    width = window.getComputedStyle(elem, null).width; 
 

 
console.log(width);
.overlay { 
 
    width: 100px; 
 
    height: 200px; 
 
    background-color: red; 
 
}
<div class="overlay"> 
 
    fdsfsd 
 
</div>

संदर्भ:

+1

धन्यवाद! यह काम करता हैं! – mondayguy

+1

यह नहीं पता कि किसने इसे कम किया है:/लेकिन हो सकता है कि 'parseInt' – Emissary

+0

@ डिगिगज़ोज़: न तो मैं करता हूं, यह थोड़ा परेशान है (लेकिन संभवतः उनके कारण हैं)। मैं 'parseInt()' (या 'parseFloat() ') का उपयोग करने के बारे में निश्चित नहीं हूं, बस इकाइयों के बिना चौड़ाई (भले ही जावास्क्रिप्ट हमेशा' पीएक्स' में लम्बाई देता है) थोड़ा सा अर्थहीन लगता है; और संख्याओं को 'बस' करने का कोई जिक्र नहीं है। यदि प्रश्न का अनुरोध करने के लिए अद्यतन किया गया है तो मैं अपडेट करूंगा, जैसा कि यह समयपूर्व लगता है। –

1

शैली केवल उस जानकारी तक पहुंच प्रदान करती है जिसे elem.style में रखा गया है। आपकी उदाहरण शैली में सीएसएस में परिभाषित मार्जिन के बारे में कुछ भी नहीं बताता है। getComputedStyle() का प्रयोग करें।

var computedStyle = getComputedStyle(document.getElementsByClassName("overlay")[0], null) 

alert(computedStyle.width); 

jsfiddle demo

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