Autor Zpráva
Aleš
Profil *
Zdravím,
potřeboval jsem na stránkách vytvořených v php, aby se mi zobrazil obsah v jednom z vedlejších sloupců jen do délky obsahu v hlavním, jelikož nevím, jak bych se v php dostal k výškám divů, tak jsem si vytvořil v javascriptu jednoduchý skript, který ale nefunguje, tak prosím o radu s JS totiž pracuji poprvé.

Nejprve v php vytvořím neviditelné divy (příspěvky fóra) a následně mám tento skript:

<script>
var vyska = document.getElementById('hlavni').offsetHeight;
var temp = document.getElementById('temp1').offsetHeight;
var i = 1;

document.getElementById('temp1').style.display="block";

while(temp < vyska)
{i++;
temp += document.getElementById("temp"+i).offsetHeight;
document.getElementById("temp"+i).style.display = "block";
}
</script>

Příspěvky se mi však vypíší všechny a když jsem si dal vypsat pro kontrolu výšku a temp, tak výška se nemění, což je dobře, ale ani temp se nemění, což už dobře není.

Děkuji za radu.
Jan Knížek
Profil
Zdrojový kód je dobré označit touto značkou:.
Je více možností jak tohoto docílit. První je nejdříve všechny elementy skrýt a pak zobrazovat některé, což mi přijde zbytečné. Lepší je projít všechny elementy pomocí fóru a který se tam nevejde jednodušše skrýt. Viz. kód:
var vyska = 100;
var temp = document.getElementById('temp1').offsetHeight;
                                          
for(var i = 1; i < document.getElementsByTagName('div').length; i++)
{
temp += document.getElementById("temp"+i).offsetHeight;
if(temp >vyska)
document.getElementById("temp"+i).style.display = "none";  
}

Třetí možností je nastavit nadřazenému elementu komentářů CSS vlastnost overflow:hidden; a poté pomocí JavaScriptu nastavit velikost tohoto elementu stejnou jaká je u hlavni. Nevýhodou je, že se komentář může oříznout v půlce. Více o overflow: http://www.jakpsatweb.cz/css/overflow.html
Chamurappi
Profil
Reaguji na Aleše:
Elementům s display: none se vůbec nevypočítávají rozměry (není důvod), proto offsetHeight vrací nulu. Pokud je chceš skrýt tak, abys je mohl přeměřit, odpozicuj je za levou či horní hranu prohlížeče.
Aleš
Profil
Chamurappi:
Jo, to byl ten problém, ale protože se mi do toho temp načetlo to první ikdyž bylo neviditelné, tak jsem si myslel, že chyba je jinde...stačilo tedy jen prohodit zobrazení a potom až přičtení výšky a funguje...

Díky

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0