Webseiten-Inhalte mit Javascript ein- und ausblenden

Inhalte mit Javascript aus- und einblenden

Vor Kurzem stand ich vor dem Problem, dass ich eine größere Liste mit Daten veröffentlichen wollte, bei der ich immer schon einen kleinen Vorschau-Teil zeigen wollte, der sich bei Klick auf einen Link zum kompletten Inhalt erweitert. Zum einen sollte dabei die Seite nicht neu geladen werden müssen, und zum anderen sollte ein vorher geöffneter Inhalt sich schließen, sobald ein anderer Inhalt geöffnet wird. Leider habe ich nur Scripte gefunden, die vor allem letzteres nicht konnten.

Ich bin mir zwar ziemlich sicher, dass man das Problem mit Ajax- oder JS-Frameworks wie jQuery, MooTools oder script.aculo.us in den Griff bekommen würde, aber es war mir einfach zu banal, um dafür gleich ein ganzes Framework zu laden.

Also habe ich mir mit Hilfe der Funktion getElementsByClassname() ein eigenes kleines JS geschrieben, das mir das Problem löst. JS-Spezis schlagen vermutlich die Hände über dem Kopf zusammen, aber da ich mich im Normalfall nicht weiter mit JavaScript beschäftigte und das Dingen problemlos in allen Systemen läuft, reicht es mir aus.

Die Funktionen

function switchClass(obj)
{
if (obj.className == "hide") {obj.className = "show";}
else {obj.className = "hide";}
}

function switchElementsByClassName(class_name,thisObj)
{
var all_obj,ret_obj=new Array(),j=0,teststr;
if(document.all)all_obj=document.all;
else if(document.getElementsByTagName && !document.all)
all_obj=document.getElementsByTagName("*");
for(i=0;i
if(all_obj[i].className.indexOf(class_name)!=-1){
teststr=","+all_obj[i].className.split(" ").join(",")+",";
if(teststr.indexOf(","+class_name+",")!=-1)
{ret_obj[j]=all_obj[i];j++;}
}
}
for (var i = 0; i < ret_obj.length; i++) {
if (ret_obj[i].id!=thisObj) {ret_obj[i].className="hide";}
}
}

Beispiele

Beispielanwendung ansehen

Beispieldaten als .zip downloaden

Getestet mit:
Win 2000: Firefox 2, Internet Explorer 5 - 7
MacOSX: Safari 2, Firefox 2 , Internet Explorer 5

Zurzeit sind 0 Kommentare zu diesem Thema vorhanden. Kommentar schreiben?

JavaScript in validem XHTML 1.1

Wenn ihr in einer XHTML 1.1 konformen Seite JavaScript einbauen wollt oder müsst, und das JavaScript ein name-Attribut in den HTML-Tags erfordert, dann wird der Validator das bemängeln. Nehmt statt name="variable" lieber id="variable" und ändert die JS-Anforderung wie folgt:

vorher:

document.variable.value 

nachher:

document.getElementById('variable').value
Zurzeit sind 3 Kommentare zu diesem Thema vorhanden. Kommentar schreiben?

MySQL: Tabellenübergreifend sortieren

Ich habe zwei MySQL-Tabellen, die etwa so aussehen.

--------------
table1
--------------
id wert1 wert2
--------------
1 a w
2 b y
3 a z
4 c x
--------------

--------------
table2
--------------
id wert1 sort
--------------
1 a 2
2 b 3
3 c 1
--------------

Jetzt habe ich aus irgendeinem Grund den Wunsch, dass die Wert2-Werte der ersten Tabelle durch die Zuordnung Ihres Wert1-Wertes zum Wert1-Wert der zweiten Tabelle anhand dessen Sort-Wert sortiert werden ... Klar, was gemeint ist? Es soll also folgendes passieren: Wert2 "w" hat in Table1 den Wert1 "a". Wert1 "a" hat in Table2 die Sort-Angabe 2. "w" soll also an die zweite Stelle sortiert werden. Das Endergebnis der Sortierung müsste in dem o.g. Beispiel so aussehen:
"x" "w" "z" "y"

Die passende MySQL-Abfrage dazu lautet folgendermaßen:

SELECT * FROM table1 LEFT JOIN table2 ON table1.wert1=table2.wert1
ORDER BY table2.sort, table1.wert
Zurzeit sind 0 Kommentare zu diesem Thema vorhanden. Kommentar schreiben?