Ik ben bezig met het maken van een text-editor..waar je ook een live preview kan zien .. en de textarea schrijf ik de woorden tussen macro's om ze bijvoorbeeld dikgedrukt te maken. Deze worden tijdens de preview vervangen door html code mbv regular expressions.
Het lukt zover bij bold, title, en het invoegen van breaks.. alleen bij het invoegen van links pakt hij elke keer de eerste patroon voor de regular expressions en vervangt deze patroon met alle andere gevonden in het document..
Inprincipe overschrijft hij elke elke gevonden string of hij vervangt alles maar een keer.. ik ben de weg kwijt hier..zou iemand van hulp kunnen zijn ??
Als het niet duidelijk is zeg je het maar..
dit is de functie waar het probleem in zit..
========================================================
function show_preview() {
var objElement = document.getElementById("content_box").value;
var objDest = objElement;
var aPattern = new Array();
aPattern[0]="(\\[B\\])";
aPattern[1]="(\\[\\/B\\])";
aPattern[2]="(\\[T\\])";
aPattern[3]="(\\[\\/T\\])";
aPattern[4]="(\\[BRK\\])";
aPattern[5]="(\[L=(.*?)\\](.*?)\\[\/L\\])";
var aReplace = new Array();
aReplace[0]="<b>";
aReplace[1]="<\/b>";
aReplace[2]="<h3>";
aReplace[3]="<\/h3>";
aReplace[4]="<br\/>";
aReplace[5]="";
var aMatch = new Array();
var aMultiMatch = new Array();
for( i = 0; i < aPattern.length; i++ ) {
aMatch[i] = new RegExp( aPattern[i], "g" );
aMultiMatch = aMatch[i].exec( objElement );
if( aMultiMatch != null ) {
if( aMultiMatch.length > 2 ) {
objElement = objElement.replace( aMatch[i], aReplace[i] + "<a href=\"" + aMultiMatch[2] + "\">" + aMultiMatch[3] + "</a>" );
} else {
objElement = objElement.replace( aMatch[i], aReplace[i] );
}
}
}
objPreview.style.display = 'block';
objPreview.innerHTML = objElement;
}
========================================================
Als je een voorbeeld wilt zien kan het geheel zippen.. als het nodig is mail ik het wel..
Het lukt zover bij bold, title, en het invoegen van breaks.. alleen bij het invoegen van links pakt hij elke keer de eerste patroon voor de regular expressions en vervangt deze patroon met alle andere gevonden in het document..
Inprincipe overschrijft hij elke elke gevonden string of hij vervangt alles maar een keer.. ik ben de weg kwijt hier..zou iemand van hulp kunnen zijn ??
Als het niet duidelijk is zeg je het maar..
dit is de functie waar het probleem in zit..
========================================================
function show_preview() {
var objElement = document.getElementById("content_box").value;
var objDest = objElement;
var aPattern = new Array();
aPattern[0]="(\\[B\\])";
aPattern[1]="(\\[\\/B\\])";
aPattern[2]="(\\[T\\])";
aPattern[3]="(\\[\\/T\\])";
aPattern[4]="(\\[BRK\\])";
aPattern[5]="(\[L=(.*?)\\](.*?)\\[\/L\\])";
var aReplace = new Array();
aReplace[0]="<b>";
aReplace[1]="<\/b>";
aReplace[2]="<h3>";
aReplace[3]="<\/h3>";
aReplace[4]="<br\/>";
aReplace[5]="";
var aMatch = new Array();
var aMultiMatch = new Array();
for( i = 0; i < aPattern.length; i++ ) {
aMatch[i] = new RegExp( aPattern[i], "g" );
aMultiMatch = aMatch[i].exec( objElement );
if( aMultiMatch != null ) {
if( aMultiMatch.length > 2 ) {
objElement = objElement.replace( aMatch[i], aReplace[i] + "<a href=\"" + aMultiMatch[2] + "\">" + aMultiMatch[3] + "</a>" );
} else {
objElement = objElement.replace( aMatch[i], aReplace[i] );
}
}
}
objPreview.style.display = 'block';
objPreview.innerHTML = objElement;
}
========================================================
Als je een voorbeeld wilt zien kan het geheel zippen.. als het nodig is mail ik het wel..