|
| JScript hvad laver jeg forkert Fra : Jens Willadsen |
Dato : 18-10-02 12:00 |
|
Hej herunder er et stykke kode der skulle gennemløbe en streng og hente alle
link ud fra strengen.
Koden virker, men kun hvis jeg istedet gentager den kode der står i
forløkken så mange gange som der er links, der skal man bare huske at lave
nye temp variabler for hver kode stykke.
Det er jo en lidt rodet måde, så jeg vil gerne have det til at køre i en
løkke, men sådan som det står herunder finder den kun et link ud af en tekst
med 7.
1. arrNyheder = new Array (10);
2. arrInt = 0;
3. strTemp = new String(strNyhed);
for ( var int = 0; int <7; int ++)
{
4. var intStart2 = strTemp.indexOf("<a");
5. var intSlut2 = strTemp.indexOf("</a>");
6. arrNyheder[arrInt] = strTemp.slice(intStart2, intSlut2);
7. strTemp = strTemp.slice(intSlut2,-1);
8. arrInt ++;
}
forklaring:
1. Laver et array til links
2. Laver en arraytæller
3. Lægger strengen med links over i en temp streng
4. Finder start indexet på et link
5. Finder slut indexet på et link
6. Lægger linket over i en arrayplads
7. Sætter temp strengen til at indeholde resten af temp strengen (fra slut index og til slutningen af link strengen
8. Tæller array positionen en op
Skriver jeg temp strengen ud lige efter linie 7, viser den at den faktisk indeholder det den skal altså resten af teksten.
men køres koden flere gange kan man se at temp streng ikke ændrer sig andet end den første gang.
plus at koden ikke finder andre links end det første link.
Og det er mere end min kyllinge hjerne fatter.
Jeg har prøvet at oprette alle variabler med og uden "var" uden resultat.
håber der er nogen derude der fatter hvad der er galt for jeg gør ik.
Hilsen Jens
| |
Jakob Andersen (18-10-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 18-10-02 13:01 |
|
"Jens Willadsen" <jens@willadsen.nu> wrote
> Det er jo en lidt rodet måde, så jeg vil gerne have det til at køre i en
> løkke, men sådan som det står herunder finder den kun et link ud af en
tekst
> med 7.
Det kan vi godt blive enige om, jeg vil tro det er i nedenstående linie:
> 5. var intSlut2 = strTemp.indexOf("</a>");
at kæden hopper af, idet at du får positionen af den første karakter "<"
dvs. du slicer ikke slut taget med, og i næste gennemløb vil der så findes
et "</a>" i position 1 og det er jo ikke så heldigt når du prøver at bruge
slice(x,1)
For at løse det skal du lige have lagt 4 til altså:
var intSlut2 = strTemp.indexOf("</a>") + 4;
Udover ovenstående er der to ting du efter min mening bør overveje:
1. Hvorfor bruger du en tæller variabel, du har jo en i løkken
2. Du vil få noget skrammel med ud da du ikke har nogen fejlbehandling hvis
der er under 7 links.
Alt i alt ville jeg lave din kode om til noget ala nedenstående som også er
lidt mere fleksibel(utestet):
>%
var strTemp = new String(strNyhed);
//Vi finder antallet af </a> i strengen og dermed antallet af links
var AntalLinks = strTemp.match(/<\/a>/ig).length;
arrNyheder = new Array(AntalLinks);
var intStart2, intSlut2
for ( var i = 0;i<AntalLinks;i++){
intStart2 = strTemp.indexOf("<a");
intSlut2 = strTemp.indexOf("</a>") + 4;
arrNyheder[i] = strTemp.slice(intStart2, intSlut2);
strTemp = strTemp.slice(intSlut2,-1);
}
> Jeg har prøvet at oprette alle variabler med og uden "var" uden resultat.
> håber der er nogen derude der fatter hvad der er galt for jeg gør ik.
Jeg håber ovenstående er opklarende, eller så spørg igen.
--
Jakob Andersen
| |
|
|