JS - replace( ) mit bestimmten Ausnahmen
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
analysieren
bearbeiten
benutzen
code
ding
doppelpunkt
ersetzen
festlegen
funktion
inhalt
stelle
string
tag
teil
text
toll code
trash
trennen
url
wort
-
Nachdem ich jetzt wider weitergeschreiben habe, stoße ich auf ein neues Problem: Mit der replace() tag/funktion">Funktion von JS kann man ja bestimmte Texte ersetzen. Mit den richtigen Regexen kann man sogar das Umfeld dieser Zeichenfolge festlegen. Allerdings such eich nach einem Regex und habe es noch nicht gefunden: Ich möchte einen HTML Text analysieren, der z.B. so aussieht:
<div style="height: 40px;">height ist toll.</div>
Wenn ich darauf jetzt "replace(/height/gi, 'Das')" anwende, zerstöre ich mir ja das Aussehen, weil dann das herauskommt:
<div style="Das: 40px;">Das ist toll.</div>
Leider habe ich kein Regex gefunden, der solche Zeichenfolgen in HTML Anweisungen ignoriert... Was muss ich machen, damit der gewünschte Effekt eintritt? Wichtig: Das Wort, was ich ersetzen will, muss variabel sein (z.B. auch "div" oder "px" usw...). -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
in diesem speziellen Fall könntest Du den Doppelpunkt miteinbeziehen:
replace(/height[^:]/gi, 'Das')
damit würde das height nur ersetzt, wenn nicht unmittelbar darauf ein Doppelpunkt folgt.
lg
Hans
-
hei schrieb:
In diesem speziellen Fall könntest Du den Doppelpunkt miteinbeziehen.
toolz schrieb:
Das geht ja leider nicht...
Wichtig: Das Wort, was ich ersetzen will, muss variabel sein (z.B. auch "div" oder "px" usw...) -
Dann mach doch genau das selbe, nur, dass vorne "> (oder vll. noch alternativ " >) und hinten </ stehen muss.
-
Ich versuche das HTML jetzt so zu filtern und an den markierten Stellen den Text später wieder einzusetzen:
Allerdings bekomme ich nichts ausgegeben. Wo liegt mein Fehler?var inhalt = document.getElementsByTagName('body')[0].innerText; var html = document.getElementsByTagName('body')[0].innerHTML; var p = 0; var k = 0; var stelle = 0; var text = false; while (inhalt.length > k) { if (inhalt.charAt(k) == html.charAt(p)) { if (text) { html = html.substr(0, p) + html.substr(p + 1); k++; } else { html = html.substr(0, p) + '#' + stelle.toString() + html.substr(p + 1 + stelle.toString().length); k++; stelle++; text = true; } } else { text = false; } p++; } alert(html);
Beitrag zuletzt geändert: 31.8.2010 17:04:28 von toolz -
Also vom ding her willst du 3 Dinge machen:
1. Willst du den Tag von dessen Inhalt trennen, dann
2. willst du den Inhalt bearbeiten und
3. willst du die Teile wieder zusammenfügen
also verpackt man das ganze am besten in eine Funktion, die sieht in diesem Fall etwa so aus:
und benutzen kannst du das dann wie replace, nur das du nicht replace schreibst, sondernString.prototype.replaceInnerHTML = function(regExpObject, replaceString){ var innerReplace = function(trash, a, b, c){ return a+b.replace(regExpObject, replaceString)+c; }; return this.replace(/(<\w+[^>]*>)([^<]*)(<\/\w+>)/g, innerReplace); };
replaceInnerHTML(/height/g, 'Das');
Sieht doch einfach aus oder? -
nemoinho schrieb:
Also vom ding her willst du 3 Dinge machen:
1. Willst du den Tag von dessen Inhalt trennen, dann
2. willst du den Inhalt bearbeiten und
3. willst du die Teile wieder zusammenfügen
also verpackt man das ganze am besten in eine Funktion, die sieht in diesem Fall etwa so aus:
und benutzen kannst du das dann wie replace, nur das du nicht replace schreibst, sondernString.prototype.replaceInnerHTML = function(regExpObject, replaceString){ var innerReplace = function(trash, a, b, c){ return a+b.replace(regExpObject, replaceString)+c; }; return this.replace(/(<\w+[^>]*>)([^<]*)(<\/\w+>)/g, innerReplace); };
replaceInnerHTML(/height/g, 'Das');
Sieht doch einfach aus oder?
Öhm solltest Du nicht dazu noch erwähnen das man dafür prototype braucht? -
Das hab ich mit Absicht übergangen, denn prototype ist nativ in JS drinne, dazu brauche ich doch kein prototypejs.org
Außerdem wollte @toolz nur wissen wie man das macht, nicht, was er dazu alles braucht, bzw. können muss.
Beitrag zuletzt geändert: 31.8.2010 23:41:55 von nemoinho -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage