Camping_RIDER: <div> bzw. <p> Elemente finden, die auf display="none" sind?

Beitrag lesen

Aloha ;)

Zusätzlich zu meinem eben geposteten, funktionierenden Beispiel...

(Verbesserungsvorschläge sind natürlich willkommen!)

Na, dann leg ich mal los mit dem advocatus diaboli :D

var txt="";

Bislang noch sinnlos, oder? Soll da später noch was rein?

var z;
for(z=0;z<boxContainerTextNodes.length;z++){

Du kannst die Variable z auch direkt in der for-Schleife "declaren". also for(var z = 0; ...
Spart dir eine Zeile Code ;) Jede unnötige, eingesparte Zeile dient der Codeleserlichkeit ;)

boxContainerTextNodeNames=txt+boxContainerTextNodes[z].className;

Vorsicht. Bedenke: className ist die Liste aller Klassennamen, also eventuell nicht ausschließlich oder exklusiv die Zeichenkette, auf die du...

if(boxContainerTextNodeNames==wantedContentBoxName){ // variable aus parent-function übernommen

...hier prüfen willst. Da brauchst du schon (einfache) reguläre Ausdrücke dafür. (Oder eben die querySelect-Funktion) Wir wollen ja nicht, dass dein System zusammenklappt und sofort, sobald du dich irgendwann entscheidest, den p's eine weitere Klasse zu geben.

var wantedElementClassName=boxContainerTextNodeNames;}

Bin ich jetzt blöd oder hättest du statt der Anweisung und der darüber auch einfach schreiben können var wantedElementClassName=wantedContentBoxName; ?

else{}}

unschön ;) Else ohne Inhalt. Trägt nicht zur Leserlichkeit bei. Außerdem hoffe ich, dass du in deinem Arbeitscode die Einrückung mehr beherzigst als hier in dem, was du postest ;)

var wantedElementClassNameList=document.getElementsByClassName(wantedElementClassName);

ah, mir war entgangen, dass es document.getElementsByClassName inzwischen auch so gibt. Das ist dann natürlich neben RegExp und querySelect die dritte Möglchkeit, sicher nach Klassen zu selektieren...

var k;
for(k=0;k<wantedElementClassNameList.length;k++){
var wantedElementId=txt+wantedElementClassNameList[k].id;}

Statt dem hier hättest du einfach schreiben können: var wantedElementId=wantedElementClassNameList[(wantedElementClassNameList.length - 1)]; Die for-Schleife ist also irgendwie imho murks - die tut nämlich nix.

var wantedContentBox=document.getElementById(wantedContentBoxId); //got it! :)

Sicher, dass du hast was du wolltest? Für mich siehts eher so aus, als wenn du immer und grundsätzlich und auch unabhängig von den Klassen immer nur das letzte Element bekommst, das mit document.getElementsByClassName(wantedContentBoxName) ausgeliefert wird... Glaube kaum, dass das das erwünschte Verhalten ist ;)

Ich will dich ja nicht in Stücke reden, aber der Code hier ist - zumindest glaube ich das - ziemlich untätiger Murks gewesen ;) Entschuldige mir den Ausdruck, nicht persönlich gemeint. Vielleicht ist da auch die U(h)rzeit dran schuld ;)

PS: Vielleicht behalte (sic!) ich den "Behalten"-Button doch - nur genau umgekehrt, als ursprünglich geplant, also nicht, um contentBoxen auf den stack zu legen, sondern um sie genau davor zu bewahren. Sollen die Leute doch selbst entscheiden, ob sie die einzelnen Dokumente und Ansichten hintereinanderweg dargestellt haben wollen, oder ob sie es wie ich komfortabler finden, über die Ablage zwischen den Ansichten zu switchen. Man könnte dann ja auch beide Funktionsweisen nach belieben kombinieren. Würde die Benutzbarkeit sicher nicht verschlechtern! Hmm... mal sehen! ;)

Aus meiner Sicht: dafür. Das "Behalten" ist ein Feature, welches der Nutzer als Zusatz bekommt - und manche finden das sicher intuitiver als das automatische Ablegen.

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[