Hej igen,
Nej man kan ikke direkte bare ændre test-strengen fra "*" til "**", for den checker kun en character ad gangen. Jeg har derfor ændret scriptet nu så det er mere dynamisk. Du kan i det nye script bare ændre "strTestToken"-variablen til en vilkårlig streng. Nu står den til "**" som du ønskede, men du kan snildt ændre den til alt muligt andet f.eks. "##-#-#" hvis du finder ud af "**" heller ikke er godt nok.
Det nye script ses nedenfor:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="
http://www.w3.org/1999/xhtml"> <head>
<title>Find replace</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
//Kan være hvad som helst nu f.eks "##-" eller "GHJ##F"
var strTestToken = "**";
var iPos = 0;
function findReplace()
{
var arrTags = document.getElementsByTagName("h4");
var arrStringTags = new Array(arrTags.length);
var i;
//Copy tags innertext to temporary array
for(i = 0; i < arrTags.length; i++)
{
arrStringTags[i] = arrTags[i].innerHTML;
}
//Remove all elements with embeded between two *'s from the document (the body of the document)
document.getElementsByTagName("body")[0].innerHTML = parseTag(document.getElementsByTagName("body")[0].innerHTML, true);
//Transform all correct elements between two *'s to <img> tags
parseTags(arrTags, arrStringTags);
}
function parseTags(arrTags, arrStringTags)
{
var i;
for(i = 0; i < arrTags.length; i++)
{
arrTags[i].innerHTML = parseTag(arrStringTags[i], false);
}
}
function parseTag(strInput, removeImg)
{
var strDocTmp = "";
var img = "";
iPos = 0;
var tmpVal;
while(strInput.charAt(iPos) != null && iPos < strInput.length)
{
img = "";
tmpVal = strInput.charAt(iPos);
if(checkToken(strInput, iPos))
{
//Skip everything within "*----*"
while(!checkToken(strInput, iPos))
{
tmpVal = strInput.charAt(iPos++);
img += tmpVal;
}
//Parse img if there is any between the "*"
if(img != "")
img = createImgTag(img);
tmpVal = strInput.charAt(iPos); //skip second *
}
if(!removeImg)
strDocTmp += img + tmpVal;
else
strDocTmp += tmpVal;
iPos++;
}
return strDocTmp;
}
function checkToken(strInput, pos)
{
var i;
if(pos + strTestToken.length > strInput.length)
return false;
for(i = 0; i < strTestToken.length; i++, pos++)
{
if(strInput.charAt(pos) != strTestToken.charAt(i))
return false;
}
iPos = pos;
return true;
}
function createImgTag(strImg)
{
var arrAttributes = strImg.split(" ");
if(arrAttributes == null || arrAttributes.length != 3)
return "";
var img = "<img src=\"" + arrAttributes[0] + "\"";
img += " height=\"" + arrAttributes[1] + "\"";
img += " width=\"" + arrAttributes[2] + "\">";
return img;
}
</script>
</head>
<body>
<table>
<tr>
<td>find and remove example</td>
<td>**c:/pic1.jpg 20 30**</td>
<td>**dette skulle fjernes**</td>
</tr>
<tr>
<td id="">
<h4><a href="#">**c:/pic1.jpg 20 30** Mit link</a></h4>
<h4><a href="#">**c:/pic2.jpg 30 25** Mit link</a></h4>
</td>
</tr>
<tr>
<td>**dette er ikke mellem en h4 tag og skal fjernes**</td>
</tr>
<tr>
<td>
<input type="button" value="Click to find and replace document" onclick="findReplace();"/>
</td>
</tr>
</table>
</body>
</html>
Håber det hjælper!
Og tak for pointene!
- Snap