Jesper TMedlem sedan nov. 20017 144 inlägg Jag får inte denna att funka, har försökt att översätta ifrån vb.
Tips?
function RemoveHTML( strText ){
var nPos1;
var nPos2;
nPos1 = indexOf(strText, "<")
while(nPos1-->0){
nPos2 = indexOf(nPos1 + 1, strText, ">")
if(nPos2 > 0){
strText = strText.substring(0,nPos1 - 1) + strText.substring(, nPos2 + 1)
}else {
exit
}
nPos1 = indexOf(strText, "<")
}
return strText;
}
javascript har en del inbyggda funktioner för det där, så pröva detta:
<script>
function replaceAll(instring, src, dest){
while(instring.indexOf(src)!=-1)
instring=instring.replace(src, dest);
return instring;
}
sss ="<html><b style=\"\">"
sss = replaceAll(sss, "<", "<");
sss = replaceAll(sss, ">", ">");
sss = replaceAll(sss, "\"", """);
alert(sss)
</script>
Annars ser jag också att det saknas ett argument i följande kommando: strText.substring(, nPos2 + 1)
dectgapMedlem sedan sep. 20021 655 inlägg Jag förstår JesperT som att han vill ta bort alla HTML-taggar, så att
<p>Lite text <i>och kursiv text</i></p>
blir
Lite text och kursiv text
Ett sätt att göra det:
<script type="text/javascript">
function RemoveHTML( strText ){
var re = /<[^>]>/g;
var strText = strText.replace(re, "");
return strText;
}
var htmlStr = "<html>aaa</html>";
document.write(RemoveHTML(htmlStr));
</script>
Eller på ett objektorienterat sätt:
<script type="text/javascript">
String.prototype.RemoveHTML = function(){
var re = /<[^>]>/g;
return this.replace(re, "");
}
var htmlStr = "<html>aaa</html>";
document.write(htmlStr.RemoveHTML());
</script>
Vilka browsers stödjer modifiering av prototypen för String på det där viset?
Verkar som ett potentiellt kompatibilitetsproblem.
Edit: En fråga till, varför ersätter replace ibland en förekomst av strängen?
dectgapMedlem sedan sep. 20021 655 inlägg
nitro2k01 skrev:
Vilka browsers stödjer modifiering av prototypen för String på det där viset?
Verkar som ett potentiellt kompatibilitetsproblem.
Det stöds senast ifrån JavaScript 1.3, så det ska nog inte vara några problem.
nitro2k01 skrev:
Edit: En fråga till, varför ersätter replace ibland en förekomst av strängen?
Menar du i mitt eller ditt exempel?
Kan du berätta hur/när det blir fel?
Jesper TMedlem sedan nov. 20017 144 inlägg dectgap, ditt exempel fungerar inte! Jag prövade att byta ut document.write mot alert, och upptäckte att taggarna var kvar. Fast det märktes ju inte med d.w, eftersom taggarna slukades. För ett sånt här exempel kanske det är bättre att använda <b> eller liknande tagg så man direkt ser om det funkar.
Angående mitt problem, se separat tråd.
dectgapMedlem sedan sep. 20021 655 inlägg
nitro2k01 skrev:
dectgap, ditt exempel fungerar inte! Jag prövade att byta ut document.write mot alert, och upptäckte att taggarna var kvar. Fast det märktes ju inte med d.w, eftersom taggarna slukades. För ett sånt här exempel kanske det är bättre att använda <b> eller liknande tagg så man direkt ser om det funkar.
Tjosan.
Jag glömde en "quantifier".
Om jag hade använt <b> hade det faktiskt gått bra, eftersom regexpen hade matchat ett-tecken-lång element.
Följande ska fungera bättre:
<script type="text/javascript">
String.prototype.RemoveHTML = function(){
var re = /<[^>]+>/g;
return this.replace(re, "");
}
var htmlStr = "</b>aaa</b>";
alert(htmlStr.RemoveHTML());
</script>
nitro2k01 skrev:
Angående mitt problem, se separat tråd.
Lägg bara till växlaren g, som står för global, till regexpen, så ska du se att det går bra.
JesperT skrev:
Se mitt inlägg här:
http://www.webforum.nu/showthread.php?s=&threadid=108091&forumid=22
Det blir samma sak med javascript.
Du vill alltså göra samma sak som metoden jag skrev här i inlägget, fast du vill utöka det så att även innehållet i script-element plockas bort?
Testa i så fall:
<script type="text/javascript">
String.prototype.RemoveHTML = function(){
var re = new RegExp("<script([^>]|\n)*>(.|\n)*?</"+"script>|<[^>]+>", "gi");
return this.replace(re, "");
}
var htmlStr = "<b>Välkommen!</b>\n\
<br>\n\
Text med html-format.\n\
...\n\
<script type=\"text/javascript\">\n\
<!--\n\
if(document.getElementById){\n\
document.write('<a href=\"../page.asp?id=pcont&strTitle='+ strTitle +'\" target=\"_blank\"><img src=\"../ico.gif\" border=\"0\" alt=\"\"></a>');\n\
};\n\
-->\n\</"+"script>";
alert(htmlStr.RemoveHTML());
</script>