Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Critic oberflächlich
Anmeldungsdatum: 22.07.2003 Beiträge: 16358
Wohnort: Arena of Air
|
(#1004534) Verfasst am: 21.05.2008, 03:16 Titel: JavaScript krepiert an einer bestimmten Stelle im Dokument |
|
|
Ich habe gerade ein JavaScript geschrieben, das in einem meiner Riesen-HTML-Dokumente Fußnoten/Endnoten in einem von mehreren wahlweisen Formaten generieren soll. Dabei werden Inhalte, die in HTML "span"-tags mit Attribut "class='footnote'" stehen, ausgelesen und daraus eine Endnote und an der Stelle, wo der "span"-tag steht, einen Verweis auf diese generiert. Dabei habe ich mich von einem Skript inspirieren lassen, das ein bißchen mit DOM arbeitet (naja, quick-and-dirty).
Jetzt habe ich nun das Problem, daß das Skript immer an einer bestimmten Literaturangabe in der HTML-Datei krepiert, nämlich "(vgl. Townsend+Harris 2004)". Der "unbekannte Laufzeitfehler" soll dabei sinnigerweise in der Zeile auftreten, in der der neue Inhalt von span.innerHTML erzeugt wird.
Dieses Verhalten ist vollkommen willkürlich, z.B. spielt es keine Rolle, wieviele "span"-tags vor dem "Übeltäter" im Dokument erscheinen. Auch die Länge des Dokuments scheint keine Rolle zu spielen, da ich im übrigen die Inhalte aller "span"-tags im Dokument normal auslesen kann.
Hat jemand eine Idee, woran das liegen könnte? Z.B. irgendwelche reservierten Schlüsselwörter? Oder eine Eigenheit des Browsers?
Code: | <!-- Original script from brandspankingnew.net was strongly adapted in order to fit my needs. -->
// fstyle = 0: deaktiviert / "Harvard-Stil"
// fstyle = 1: hochgestellte Nummern als Verweise, Literaturangabe in der Fußnote
// fstyle = 2: Nummern in eckigen Klammern
function footnotes(contID,noteID)
{
// Aufruf im HTML-Dokument: footnotes('footnote','footnotes');
if (fstyle == 0) { return; }
var cont = document.getElementById(contID);
var noteholder = document.getElementById(noteID);
var spans = cont.getElementsByTagName("span");
var notes = 0;
var tempString = "";
var span = "";
for (i=0;i<spans.length;i++)
{
span = spans[i];
if (span.className == "footnote")
{
notes++;
tempString = span.innerHTML;
if (tempString.length >= 2 && tempString.charAt(0) == '(' && tempString.charAt(tempString.length-1) == ')') { tempString = tempString.slice(1,tempString.length-1); }
if (tempString.length >= 2 && tempString.charAt(0) == '[' && tempString.charAt(tempString.length-1) == ']') { tempString = tempString.slice(1,tempString.length-1); }
var div = document.createElement("div");
var footnotetext = "<a name='note"+notes+"'><sup>" + notes + "</sup> " + tempString + " <a href='#nlink"+notes+"' title='zurück'>↩</a>";
div.innerHTML = footnotetext;
noteholder.appendChild(div);
switch(fstyle) {
case 1: span.innerHTML = "<a name='nlink"+notes+"' href='#note" + notes + "' title='zur Fußnote'><sup>" + notes + "</sup></a>"; break;
case 2: span.innerHTML = "<a name='nlink"+notes+"' href='#note" + notes + "' title='zur Fußnote'>[" + notes + "]</a>"; break;
}
}
}
|
_________________ "Die Pentagon-Gang wird in der Liste der Terrorgruppen geführt"
Dann bin ich halt bekloppt.
"Wahrheit läßt sich nicht zeigen, nur erfinden." (Max Frisch)
|
|
Nach oben |
|
 |
Critic oberflächlich
Anmeldungsdatum: 22.07.2003 Beiträge: 16358
Wohnort: Arena of Air
|
(#1005939) Verfasst am: 23.05.2008, 01:32 Titel: Re: JavaScript krepiert an einer bestimmten Stelle im Dokument |
|
|
Critic hat folgendes geschrieben: | Ich habe gerade ein JavaScript geschrieben, das in einem meiner Riesen-HTML-Dokumente Fußnoten/Endnoten in einem von mehreren wahlweisen Formaten generieren soll. Dabei werden Inhalte, die in HTML "span"-tags mit Attribut "class='footnote'" stehen, ausgelesen und daraus eine Endnote und an der Stelle, wo der "span"-tag steht, einen Verweis auf diese generiert. Dabei habe ich mich von einem Skript inspirieren lassen, das ein bißchen mit DOM arbeitet (naja, quick-and-dirty).
Jetzt habe ich nun das Problem, daß das Skript immer an einer bestimmten Literaturangabe in der HTML-Datei krepiert, nämlich "(vgl. Townsend+Harris 2004)". Der "unbekannte Laufzeitfehler" soll dabei sinnigerweise in der Zeile auftreten, in der der neue Inhalt von span.innerHTML erzeugt wird.
... |
In der Tat funktioniert das Script und erzeugt mir Fußnoten und Verweise darauf, wenn ich keine HTML-Anchors ("a name"...) erzeuge. Dann habe ich allerdings auch keine Möglichkeit, von einer Markierung zu der damit verbundenen Fußnote zu springen. Ein unbefriedigendes Verhalten. Allerdings bleiben für den, der JavaScript deaktiviert hat, die Literaturverweise, die eigentlich in Fußnoten sollten, immerhin innerhalb des Textes stehen.
_________________ "Die Pentagon-Gang wird in der Liste der Terrorgruppen geführt"
Dann bin ich halt bekloppt.
"Wahrheit läßt sich nicht zeigen, nur erfinden." (Max Frisch)
|
|
Nach oben |
|
 |
|