onClick-Funktion in XML
Markus Schnitzler
- javascript
Hallo!
Ich habe auf meiner Homepage eine XML-Seite, auf der ich meine Bücher präsentiere (www.mschnitzler2000.de/bibliothek.xml). Ich möchte zu jedem Buch u.a. eine Inhaltsangabe schreiben. Um jedoch nicht zuviel vom Inhalt zu verraten, habe ich eine Möglichkeit gesucht, einen Teil des Textes zu verstecken, so dass dieser erst nach einem Klick angezeigt wird. Dabei habe ich eine Lösung mit Javascript gefunden:
http://www.qxm.de/webdesign/20031201-090246/texte-und-bilder-ein-und-ausblenden
Ich habe den Javascript-Befehl in die XSL-Datei eingefügt.
<script type="text/javascript">
function surfto(myForm)
{
var mySelect = myForm.getElementsByTagName("select").namedItem("dest");
myIndex = mySelect.selectedIndex;
location.href = mySelect.options[myIndex].value;
}
</script>
Den Link zum Anzeigen des verborgenen Textes habe ich in den entsprechenden Template-Abschnitt geschrieben. In der XML-Datei steht unter "Inhalt" der erste Teil der Inhaltsbeschreibung und unter "Inhalt2" der versteckte zweite Teil.
<xsl:template match="Inhalt">
<hr/>
<div class="abspann1">xsl:apply-templates/</div>
</xsl:template>
<xsl:template match="Inhalt2">
<br/><a href="#" onClick="javascript:toggledisplay('hiddendiv'); return false">weiter</a>
<div id="hiddendiv" class="abspann1">xsl:apply-templates/</div>
<hr/>
</xsl:template>
So weit, so gut. Meine Konstruktion funktioniert.
Als ich die neuen Daten, die ich bisher nur bei einem Datensatz stehen hatte (beim Buch von Matt Richtel), innerhalb der XML-Datei kopieren wollte, gab es ein Problem: Beim Klick auf den weiter-Link öffnete sich der verborgene Text beim obersten Datensatz.
Es liegt offensichtlich an der Adressierung über den Namen "hiddendiv". Ich brauche wohl für jeden Datensatz eine eigene ID. Aber wie kann ich die ID flexibel einfügen? Ich habe es schon mit XSL-Attributen probiert, aber ich komme zu keiner funktionierenden Lösung.