Gunnar Bittersmann: Wechsel von "display none" nach "display block" zerstört Tabellen-Layout

Beitrag lesen

@@Gunnar Bittersmann

Zum Nicht-Anzeigen gibt es das HTML-Attribut hidden. Dieses ist hier zu verwenden:

function aufrufen(nr)
{
	for (var w = 0; w < x; w++)
	{
		if (w == nr)
		{
			document.getElementById("liste-" + kategorien[w]).removeAttribute("hidden");
		}
		else
		{
			document.getElementById("liste-" + kategorien[w]).setAttribute("hidden", "");
		}
	}
}

Es sollte auch so gehen:

function aufrufen(nr)
{
	for (var w = 0; w < x; w++)
	{
		if (w == nr)
		{
			document.getElementById("liste-" + kategorien[w]).hidden = false;
		}
		else
		{
			document.getElementById("liste-" + kategorien[w]).hidden = true;
		}
	}
}

Was sich dann kurz schreiben lässt:

function aufrufen(nr)
{
	for (var w = 0; w < x; w++)
	{
		document.getElementById("liste-" + kategorien[w]).hidden = (w != nr);
	}
}

IIRC haben einige ältere Browser (IE < ?) Probleme mit .hidden; da funktioniert’s nur mit setAttribute()/removeAttribute().

LLAP 🖖

--
“When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory