Har ett stort problem med en javascriptfunktion som ska hitta [table][/table] och ersätta den med sin like i HTML. Tyvärr verkar det vara fler än jag som inte förstår varför felet uppstår eftersom det hittills inte varit någon som kunnat hjälpa mig. Funktionen ser ut:
var myString = document.getElementById("form1").information.value;
var findReg = new RegExp ("\\[table(.*?)\\]([\\s\\S]*?)\\[/table\\]","gi");
myString = myString.replace(findReg, function($2,$1){return parseTable(1,$2,$1);});
function parseTable(type,texten,extraTag1)
{
var extraTagAPP1 = "";
var re = new Array;
var myArray = new Array;
if (type == 1)
{
if (extraTag1 != undefined && extraTag1 != '0' && extraTag1 != '')
{
var contentTables = new Array("cellspacing","cellpadding","border","width","height");
var contentTablesValues = new Array('0','0','0','100%','');
var contentTablesExtra = new Array('','','','px','px');
re[re.length] = /cellspacing[\s]*?=[\s]*?([\d]{1,2})/i;
re[re.length] = /cellpadding[\s]*?=[\s]*?([\d]{1,2})/i;
re[re.length] = /border[\s]*?=[\s]*?([\d]{1,2})/i;
re[re.length] = /width[\s]*?=[\s]*?([\d]{1,3})/i;
re[re.length] = /height[\s]*?=[\s]*?([\d]{1,3})/i;
for (x=0;x<re.length;++x)
{
myArray[x] = extraTag1.match(re[x]);
if (myArray[x] != undefined)
extraTagAPP1 += " "+contentTables[x]+"='"+myArray[x][1]+contentTablesExtra[x]+"'";
else if (contentTablesValues[x] != "")
extraTagAPP1 += " "+contentTables[x]+"='"+contentTablesValues[x]+contentTablesExtra[x]+"'";
}
}
else
extraTagAPP1 = " cellpadding='0' cellspacing='0' border='0' width='100%'";
texten = "<table"+extraTagAPP1+">"+texten.replace(/\n<br \/>/g, "\n")+"</table>";
var searchString = new RegExp ("\\[tr( rowspan=(\\d{1,2}))?\\]([\\s\\S]*?)\\[/tr\\]","gi");
var replaceString = function($3,$2){return parseTable(2,$3,$2);};
}
else if (type == 2)
{
return "";
}
else
return texten;
return texten.replace(searchString, replaceString);
}
Jag hämtar texten jag vill formatera från en textarea och kör den sedan genom en regexp-replace. Här någonstans slår allt snett och det bildas en oändlig loop. Skriver jag till " return "" " i tredje sista raden (precis över "return texten.replace(searchString, replaceString);" ) så bildas det inte en oändlig loop, men om jag inte gör detta så, ja ni förstår.
Jag har försökt att hitta felet nu i flera timmar utan att lyckas. Så, om någon kunde ge mig en hjälpande hand vore jag överlycklig!