Autor | Zpráva | ||
---|---|---|---|
Aleš Profil * |
#1 · Zasláno: 1. 7. 2011, 09:29:17
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 |
#2 · Zasláno: 1. 7. 2011, 14:43:09
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 |
#3 · Zasláno: 1. 7. 2011, 14:54:16
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 |
#4 · Zasláno: 1. 7. 2011, 18:45:46
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 |
||
Časová prodleva: 13 let
|
0