Dapatkan ketinggian div dengan JavaScript biasa

312

Ada ide tentang cara mendapatkan tinggi div tanpa menggunakan jQuery?

Saya sedang mencari Stack Overflow untuk pertanyaan ini dan sepertinya setiap jawaban menunjuk ke jQuery .height().

Saya mencoba sesuatu seperti myDiv.style.height, tetapi tidak mengembalikan apa-apa, bahkan ketika div saya memilikinya widthdan heightdiatur dalam CSS.

lwiii
sumber

Jawaban:

587
var clientHeight = document.getElementById('myDiv').clientHeight;

atau

var offsetHeight = document.getElementById('myDiv').offsetHeight;

clientHeight termasuk padding.

offsetHeight termasuk padding, scrollBar, dan border.

Dan
sumber
2
offsetheight doesnt wokr pada ie10 di bawah quirksmode.org/mobile/tableViewport_desktop.html
fearis
3
Anda juga bisa menggunakan scrollHeightyang mencakup ketinggian dokumen yang terkandung, padding vertikal, dan batas vertikal.
Saeid Zebardast
5
clientHeightjuga termasuk padding, jadi tidak setara dengan$.height()
Eevee
2
perbatasan dan margin juga mengambil ruang. :) dan jawaban Anda menyiratkan clientHeighttidak termasuk padding. dan pertanyaan menyebutkan keduanya $.height()dan .style.height, tidak ada yang termasuk padding, menyarankan penanya tidak menginginkannya juga.
Eevee
3
Catatan: OP tidak meminta jawaban yang mengecualikan padding . Tidak ada solusi lintas-platform asli untuk apa yang saya ketahui.
Dan
23

jsFiddle

var element = document.getElementById('element');
alert(element.offsetHeight);
Daniel Imms
sumber
22

Opsi lain adalah menggunakan fungsi getBoundingClientRect. Harap dicatat bahwa getBoundingClientRect akan mengembalikan kotak kosong jika tampilan elemen 'tidak ada'.

Contoh:

var elem = document.getElementById("myDiv");
if(elem) {
   var rect = elem.getBoundingClientRect();
   console.log(rect.height);  
}
pengguna4617883
sumber
2
Saya pikir ini adalah solusi yang lebih baik
Intervalia
11
var myDiv = document.getElementById('myDiv'); //get #myDiv
alert(myDiv.clientHeight);

clientHeight dan clientWidth adalah apa yang Anda cari.

offsetHeight dan offsetWidth juga mengembalikan tinggi dan lebar tetapi mencakup border dan scrollbar. Bergantung pada situasinya, Anda dapat menggunakan salah satunya.

Semoga ini membantu.

Keo Strife
sumber
2

Jawaban lain tidak berhasil untuk saya. Inilah yang saya temukan di w3schools , dengan asumsi divmemiliki heightdan / atau widthmengatur.

Yang Anda butuhkan adalah heightdan widthuntuk mengecualikan padding.

    var height = document.getElementById('myDiv').style.height;
    var width = document.getElementById('myDiv').style.width;

Anda downvoters: Jawaban ini telah membantu setidaknya 5 orang, menilai dari upvotes yang saya terima. Jika Anda tidak menyukainya, katakan mengapa saya bisa memperbaikinya. Itu adalah hewan peliharaan terbesar saya dengan downvotes; Anda jarang memberi tahu saya mengapa Anda menurunkannya.

derek
sumber
23
Ini tidak akan berfungsi kecuali div memiliki satu set heightdan / atauwidth
hopkins-matt
1
Saya pikir itu dianggap dan tersirat. Apakah Anda ingin peringatan yang disebutkan dalam jawaban saya?
derek
2
Ini lebih baik. Saya pribadi tidak akan menganggap metode lain tidak akurat. Saya berani mengatakan bahwa saya memiliki kegunaan untuk offsetHeightdan clientHeightlebih sering daripada style.height.
hopkins-matt
1
Mereka tidak bekerja untuk saya. Itu sebabnya saya memposting jawaban ini.
derek
1
Saya tidak bisa melihat bagaimana w3schools mengatakan metode lain tidak akurat.
aknuds1
1
<div id="item">show taille height</div>
<script>
    alert(document.getElementById('item').offsetHeight);
</script>

Jsfiddle

pengguna3556121
sumber
1

Selain el.clientHeightdan el.offsetHeight, saat Anda membutuhkan ketinggian konten di dalam elemen (terlepas dari tinggi yang ditetapkan pada elemen itu sendiri), Anda dapat menggunakannya el.scrollHeight. Info lebih lanjut

Ini bisa berguna jika Anda ingin mengatur tinggi elemen atau tinggi maksimum ke ketinggian yang tepat dari konten dinamis internal. Sebagai contoh:

var el = document.getElementById('myDiv')

el.style.maxHeight = el.scrollHeight+'px'
cronoklee
sumber
Bagi siapa pun yang bertanya-tanya, ini sangat berguna untuk melakukan transisi CSS untuk dropdown yang memiliki konten dinamis-tinggi
cronoklee
1

mencoba

myDiv.offsetHeight 

Kamil Kiełczewski
sumber
1

Berikut satu alternatif lagi:

var classElements = document.getElementsByClassName("className");

function setClassHeight (classElements, desiredHeightValue) 
    {
        var arrayElements = Object.entries(classElements);
        for(var i = 0; i< arrayElements.length; i++) {
            arrayElements[i][1].style.height = desiredHeightValue;
        }

    }
Pedro Coelho
sumber
1

Satu opsi adalah

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
SHIVANSH NARAYAN
sumber