Hallo zusammen,
ich möchte ne JavaScript Funktion schreiben, die mir in einem HTML-Dokument in Links einige Buchstaben anders darstellt als andere. Klingt jetzt vermutlich etwas schräg, daher mal ein Beispiel: Verlinkter Text soll grundsätzlich schwarz dargestellt werden, bloß wenn ein f drin vorkommt, dann soll das f rot sein (der Rest des verlinkten Wortes bleibt schwarz).
So weit bin ich schon:
function rotesf() {
for(var i = 0; i
hier eine ausbaufähige funktion:
function einfaerben(c, color)
{
var a\_tags = document.getElementsByTagName("a");
for (var i=0; i" + c + "");
a\_tags[i].style.color = "000000";
}
}
hab ich unter ie6 und mozilla (firebird 0.7) getestet und scheint ok zu sein. sollte nicht weiter schwer sein, das nötigenfalls für andere browser hinzubiegen, falls es nicht auf anhieb geht.
ich sehe hier probleme, wenn im a-tag weitere tags stehen (z.b. ein bild). das sollte man ggf noch abfangen 
gruss
ric
beim nochmal drüberlesen, würde ich vorschlagen, folgende zeile zu entfernen:
a\_tags[i].style.color = "000000";
und stattdessen eine css-klasse anlegen:
a{color : #000000;}
da es ja eh alle a-tags betrifft.
gruss
ric
Hallo ric,
vielen Dank und ein * für deinen Lösungsvorschlag.
Was macht die Methode split©? Ich nehme an, sie trennt die Zeichenkette überall dort auf, wo der entsprechende Buchstabe auftaucht, d.h. in deinem Beispiel ist die Variable parts dann ein Array, das die Teile der Zeichenkette enthält, in denen der Buchstabe nicht vorkommt?
Hast Du auch eine Idee wie man vorgehen könnte, wenn es sich nicht um einen einzigen Buchstaben handelt, sondern mehrere Buchstaben, die anders (aber alle gleich anders) dargestellt werden sollen? C soll also nicht ein bestimmter Buchstabe sein, sondern eine von mehreren Möglichkeiten annehmen. Diese Buchstaben müssen der Funktion nicht übergeben werden, sie können ruhig innerhalb der Funktion als Variablen deklariert werden.
Grüße
Kerstin
function einfaerben(c, color)
{
var a_tags = document.getElementsByTagName(„a“);
for (var i=0; i" + c + „“);
a_tags[i].style.color = „000000“;
}
}
Was macht die Methode split©? Ich nehme an, sie trennt die
Zeichenkette überall dort auf, wo der entsprechende Buchstabe
auftaucht, d.h. in deinem Beispiel ist die Variable parts dann
ein Array, das die Teile der Zeichenkette enthält, in denen
der Buchstabe nicht vorkommt?
stimmt genau.
Hast Du auch eine Idee wie man vorgehen könnte, wenn es sich
nicht um einen einzigen Buchstaben handelt, sondern mehrere
Buchstaben, die anders (aber alle gleich anders) dargestellt
werden sollen? C soll also nicht ein bestimmter Buchstabe
sein, sondern eine von mehreren Möglichkeiten annehmen. Diese
Buchstaben müssen der Funktion nicht übergeben werden, sie
können ruhig innerhalb der Funktion als Variablen deklariert
werden.
das ist ein bisschen schwieriger.
ich würde hierbei einen anderen ansatz verfolgen:
einfach den kompletten string des a-tags zeichen für zeichen durchgehen und mit der liste der zeichen vergleichen, die hervorgehoben werden sollen.
hier kann man auch relativ einfach eine überprüfung einbeziehen, ob man sich gerade innerhalb eines tags befindet, oder nicht.
man möchte ja nicht, dass zum beispiel ein „a“ hervorgehoben wird, das in „“ steht - das würde den html-code zerstören.
hier mein code-vorschlag:
function einfaerben()
{
var color = "red";
var c = new Array("f", "d", "a");
var a\_tags = document.getElementsByTagName("a");
for (var i=0; i")
innerTag = false;
else if (!innerTag && isElementOf(c, character))
character = "" + character + "";
newText += character;
}
a\_tags[i].innerHTML = newText;
a\_tags[i].style.color = "000000";
}
}
function isElementOf(array, element)
{
for (var i=0; i
gruss ric
p.s.: alle angaben ohne gewähr :wink:
1 „Gefällt mir“
ein weiterer ansatz wäre die verwendung von regulären ausdrücken (objekt RegExp).
ich muss gestehen, dass ich mich damit kaum auskenne, aber ich bin mir sicher, wenn man etwas ahnung davon hat, kann man solche probleme sehr einfach damit lösen.
selfhtml-infos zum objekt gibts hier:
http://de.selfhtml.org/javascript/objekte/regexp.htm
nochn gruss
ric
Hallo ric,
super, damit kann ich schonmal etwas anfangen und das Code-Gerüst für meine Zwecke entsprechend abwandeln. Herzlichen Dank.
Danke auch für den Hinweis auf die regulären Ausdrücke, da hab ich jetzt ja mal das passende Schlagwort dazu und weiss wenigstens wonach ich suchen muss, um das vielleicht noch ein bisschen eleganter zu lösen.
Gruß
Kerstin