ugrás a tartalomhoz

javascript + css probléma ie-ben

krey · 2006. Jún. 25. (V), 02.04
Egy weblap fejlesztése során elég komoly problémában akadtam meg.
A program feladata, hogy a teljes bejegyzés (.entry) letöltése után javascript-tel lerövidítse és a tovább feliratra kattintáskor a felirat eltűnjön, a bejegyzés vége pedig elő.
Adott egy html fájl:

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Mi a francért nem működik?</title>
  <script src="js.js" type="text/javascript"></script>
 </head>
 <body onload="init()">
  <div class="entry">
   <h3>Lorem Ipsum</h3>
   <div class="entry-content">
    <div class="entry-text">
     <p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce euismod commodo ante. Curabitur risus massa, congue ac, hendrerit sit amet, pretium lobortis, eros. Pellentesque tincidunt faucibus ligula. Curabitur blandit facilisis felis. Nullam sed augue. Sed rutrum sodales arcu. Donec a nunc. Donec feugiat facilisis ligula. Cras lectus nulla, fringilla vel, feugiat ac, scelerisque sed, orci. Mauris vestibulum condimentum ipsum. Nullam nec nulla. Donec dignissim porttitor risus. Integer non arcu sed neque eleifend euismod. Praesent sapien sapien, aliquet eu, egestas at, posuere at, nulla. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean venenatis dolor consequat ipsum. In nibh lorem, molestie at, sollicitudin commodo, malesuada vitae, ipsum. Duis pellentesque, quam eu laoreet pharetra, dolor augue pretium lacus, venenatis cursus nulla nulla quis ligula. Suspendisse potenti.
     </p>
     <p>
Donec eget risus sit amet enim ultricies lacinia. Nullam eget diam. Quisque metus lectus, ornare ac, consequat dignissim, venenatis non, ante. Nulla ullamcorper nibh vitae nisi. Sed pretium egestas tellus. Sed varius. Sed in arcu sit amet mi accumsan tincidunt. Morbi nonummy ante ac tortor ornare mollis. Praesent quam nisl, venenatis quis, fringilla ac, fringilla at, tellus. In eu nisl. Aliquam id elit. Curabitur congue velit ac arcu. Maecenas ornare mi at lectus vestibulum tristique. Vivamus nec diam ut risus rutrum porttitor. Pellentesque vulputate venenatis nisi. Donec pharetra. Pellentesque ut nibh ac nunc vulputate euismod. Cras leo arcu, volutpat quis, feugiat vel, laoreet vel, nibh. Praesent et urna id nulla pharetra vehicula.
     </p>
    </div>
   </div>
  </div>
 </body>
</html>
és a hozzátatozó javascript

function init() {
	collapse();
}
function collapse() {
	tags = document.getElementsByTagName("*");
	goodElements = new Array();
	if (tags) {
		var ElementNode = 0
		for (x = 0; x < tags.length; x++) {
			if (tags[x].className == "entry-text" ) {
				var Elements = 0;
				for (y = 0; y < tags[x].childNodes.length;y++) {
					if (tags[x].childNodes[y].nodeType == 1) {
						if (Elements != 0) {
							tags[x].childNodes[y].style.display = "none";
						}
						Elements++;
					}
				}
				if (Elements > 1) {
					var contElement = document.createElement("div");
					var cont = tags[x].appendChild(contElement);
					cont.innerHTML = ("<a href=\"javascript:;\" onclick=\"openUp("+ElementNode+")\" title=\"olvass tovább!\">tovább &raquo;</a>");
					cont.setAttribute("id","next"+ElementNode);
				}
				goodElements[ElementNode] = tags[x];
				ElementNode++;
			}
		}
	}
}
function openUp(num) {
	var aim = goodElements[num];
	aim.removeChild(document.getElementById("next"+num));
	myLength = aim.childNodes.length;
	for (y = 0; y < myLength;y++) {
		if (goodElements[num].childNodes[y].nodeType == 1) {
			goodElements[num].childNodes[y].setAttribute("style","display: auto");
			/*or goodElements[num].childNodes[y].style.display =  "auto";*/
		}
	}
}
Firefoxban tökéletesen működik, IE-ben sajnos nem. Már mindennel próbáljoztam, ami tőlem tel(l)ik. Előre is köszi a segítséget!

üdv. krey

ps. bocsánat, hogy ilyen hosszú lett, de nem tudom rövidebben
 
1

mijaza a display auto?

toxin · 2006. Jún. 25. (V), 10.46
fireBug alatt: Error in parsing value for property 'display'. Declaration dropped.

így jó
goodElements[num].childNodes[y].style.display = 'block';
2

nálam nem

krey · 2006. Jún. 25. (V), 20.31
Köszönöm hogy megnézted, Firefox 1.5.0.4 alatt FireBug 0.4-gyel én nem kapok ilyen hibát. Tökéletesen működik.
A display: auto-t azért találtam jó ötletnek, hogy megmaradjon az eltűntetett elemek eredeti tulajdonsága.
De ez az egész most amúgy is mindegy, mert nekem alapvetően IE-vel voltak problémáim.

üdv. krey
3

re

toxin · 2006. Jún. 25. (V), 22.00
jaja tudom IE, csak IE alatt nemtudok hibaüzit produkálni :)

egyébként ha a display:auto, ilyet tud "megmaradjon az eltűntetett elemek eredeti tulajdonsága" akkor erre dobj egy linket ahol leírják ezt thx (itt néztem http://www.w3.org/TR/REC-CSS2/visuren.html#display-prop ill. a gugliban ill. itt http://weblabor.hu/cikkek/cssalapjai4 ), mindenestre display:block-al müxik IE alatt is

itt a hibaüzenet ha nekem nem hiszel :P :)
http://toxin.hu/css_err.jpg

options/show css errors, pipálva persze, és a linkre kattintás után