/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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



Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408837
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste