Funkar det om du lägger till px?
style="height:expression((document.getElementById('search_2').scrollHeight+30)+'px');"
/ m a r t i n
16 svar · 726 visningar · startad av Web-Tor
Jag försöker att sätta höjden på ett element genom att använda expression.
Det jag vill göra är att tilldela elementet samma höjd som ett annat element + 30px.
style="height:expression(document.getElementById('search_2').scrollHeight+30);
Problemet är att IE hänger sig så fort jag laddar sidan. Tar jag bort +30 så funkar det. :q
Funkar det om du lägger till px?
style="height:expression((document.getElementById('search_2').scrollHeight+30)+'px');"
/ m a r t i n
Det spelade inte någon roll om jag lade till px.
Detta är smått sjukt! Om jag tar -30 istället så hänger sig inte IE?! Fast resultatet blir ju fel. :(
konstigt. kan det hjälpa med margin-bottom:-30px i stället?
...eller kanske inte förresten. Vad vill du uppnå? Det verkar som du försöker göra skrollhöjden större än den är. Det kan vara det som är problem, för om den puttar ut scrollhöjden så den blir 30px större, försöker expression antagligen göra den 30 px större igen och det blir en oändlig loop av det hela. Kan det vara så?
/ m a r t i n
martin skrev:
Vad vill du uppnå?
Jag vill helt enkelt kolla höjden på ett element och sedan sätt ett annat element till den höjden (+30px).
OK, då tror jag att ett vanligt javascript blir bättre än en css-expression, eftersom expression körs hela tiden, vilket gör att det loopar oändligt (i det här fallet) verkar det som - och krashar explorer.
/ m a r t i n
Det märkliga är att kör jag +1 så funkar det...
Om det vore en loop så skulle det ju också hänga sig efter en stund.
Kör alert(document.getElementById('search_2').scrollHeight). Kanske är det så att den alertar typ "26px" eller något så att du sätter höjden till "26px30". Annars så kan du väl testa document.getElementById('search_2').offsetHeight.
Den alertar "178" och tar jag -30 så blir den 147 pixlar hög. Tar jag +30 så hänger den sig.
Jag använder liknande expressions på andra ställen och där funkar det att plussa på pixlar. offsetHeight funkar inte eftersom det är just scrollHeight som jag är ute efter.
alerta document.getElementById('search_2').scrollHeight + 30 och kolla om du får något konstigt svar :-) Det låter ganska konstigt alltså.
Jag har hinnit hem och lämnat koden på jobbet så jag får återkomma med svar på den frågan imorgon. ;)
Om du försöker dig på
<div id="search_2">
<div style="height:expression((document.getElementById('search_2').scrollHeight+30)+'px');">
</div>
</div>
är det, som martin påpekade, ganska naturligt att det blir något galet, eftersom du konstruerar en oändlig loop, där höjden av det inre div-elementet försöker bli minst 30px högre än sin egen höjd.
Om du däremot skriver
<div id="search_2">
</div>
<div style="height:expression((document.getElementById('search_2').scrollHeight+30)+'px');">
</div>
är det konstigt om det inte fungerar, eftersom elementen är oberoende av varandra. När jag prövar detta själv fungerar det utan problem.
Vilket av sätten använder du dig av?
För en som har tittat och tittat, vad är skillnaden på koderna?
Den yttre divens höjd beror på den inre divens höjd och den inre divens höjd beror på den yttre divens höjd.
a = b + 30
b = a, ger att
a = a + 30
b = b + 30
Eller vad man ska säga :-)
Ahhh,
nu såg jag, tack så mycket.
dectgap skrev:
Vilket av sätten använder du dig av?
Jag använder en variant av det första exemplet. :(
Men varför funkar det om jag kör +1?
Web-Tor skrev:
Men varför funkar det om jag kör +1?
Det kanske hamnar innanför någon marginal eller nåt. Eller så är det då IE gör fel (sånt kan hända).
/ m a r t i n