Waarom worden spaties niet verwijderd?

Status
Niet open voor verdere reacties.

Uturn

Gebruiker
Lid geworden
7 apr 2009
Berichten
100
Ik ben bezig een script om te gooien. Het is de bedoeling dat spaties, LF, CR enz uit een string worden verwijderd. Maar als een string in onderstaande code wordt ingevoerd dan staan er nog steeds spaties, en ik snap niet waar ze vandaan komen aangezien ik de %20 in de escape-string heb verwijderd. Als ik met indexOf zoek naar " ", dan worden die niet gevonden. Ik krijg ze dan ook niet uit de unescape-string. Wat is hier aan de hand?

[JS]<html>
<head>

<title>Titel</title>
<script type="text/javascript">

function CleanSeq(DirtySeq) {
DirtySeq = escape(DirtySeq);
for (Cl = 0; Cl < DirtySeq.lenth; Cl++) {
if (DirtySeq.indexOf("%0D") > -1) {
DirtySeq = DirtySeq.replace("%0D", "")
}
if (DirtySeq.indexOf("%0A") > -1) {
DirtySeq = DirtySeq.replace("%0A", "")
}
if (DirtySeq.indexOf("%20") > -1) {
DirtySeq = DirtySeq.replace("%20", "")
}
}
DirtySeq = unescape(DirtySeq);
return DirtySeq;
}


function FindSeeds() {
var SeqElem, InvoerSeq, NewSeq;
SeqElem = document.getElementById("SeedBronSeq");
InvoerSeq = SeqElem.value.toLowerCase();
NewSeq = CleanSeq(InvoerSeq);
document.write(NewSeq + "<br>");
}

</script>

</head>

<body>

<h2>Voer een sequentie in</h2>
<form name="Invoer">
<br>
<textarea name="Bron" id="SeedBronSeq" rows=8 cols=80></textarea>
<br>
<input type="reset" value="Opnieuw">
<input type="button" value="Zoek" onClick="FindSeeds()">
</form>

</body>

</html> [/JS]
 
In je for loop heb jij staan:
[JS] for (Cl = 0; Cl < DirtySeq.lenth; Cl++) {
[/JS]

lenth bestaat niet dit moet zijn: DirtySeq.length (dus met een G er tussen)Vandaar dat hij niet in die for-loop komt.

Offtopic:
Volgens mij is het overkill om per karakter de string te doorlopen alleen maar om de spaties te verwijderen.
Je kan ook bij de replace de /g (global) switch gebruiken.
De functie zou dan worden:

Code:
function CleanSeq(DirtySeq) {
  DirtySeq = escape(DirtySeq);
  DirtySeq = DirtySeq.replace(/%0D/g, "");
  DirtySeq = DirtySeq.replace(/%0A/g, "");
  DirtySeq = DirtySeq.replace(/%20/g, "");
  DirtySeq = unescape(DirtySeq);
  return DirtySeq;
}
 
Bedankt Deliri,

Stom van die g. Ik zat al te lang achter mijn computer denk ik...
Met die length goed geschreven werkt het wel (natuurlijk).

Jouw functie met die global switch is inderdaad logischer, maar dan blijven er spaties staan waar er enters in de tekst zijn ingevoerd. Met die functie van mij (met length goed geschreven) werkt het wel. Ik had dat met die global al op een andere manier geprobeerd, vandaar dat ik het via een ogenschijnlijke overkill probeerde.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan