[js] probleempje met herhaling van function

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik word echt helemaal mesjokke :) Ik bedoel dat ik helemaal gek wordt van het scriptje en allemaal nummertjes en lettertjes zie vliegen.

Ik was van plan een scriptje te schrijven voor het dynamisch genereren van een sitemap.

Dus was lekker met een scriptje begonnen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
domein = 'c:';
var i = 0;
link = new Array();
function createSitemap(el) {
    for (link in i.links) {
        link = document.links[link] + ' ';
        linksd.innerHTML += link + '<br />';
        if (link.indexOf(domein) >= 1) {
            document.frames['theIframe'].location.href = link;
            index = createSitemap(document.frames['theIframe'].document);
        }
    }
}

Leek me wel aardig te werken, maar had er niet aangedacht dat als de functie 'createSitemap' nog een keer aan wordt geroepen, de variabele link wordt overschreven en de loop dus helemaal in de ware raakt.
Nu leek me het gebruik van arrays wel een goede oplossing (wat dus niet zo bleek te zijn.):
code:
1
2
3
4
5
6
7
8
9
10
11
function createSitemap(el,index) {
    for (link[index] in el.links) {
        link[index] = document.links[link[index]] + ' ';
        linksd.innerHTML += link[index] + '<br />';
        if (link[index].indexOf(domein) >= 1) {
            document.frames['theIframe'].location.href = link[index];
            createSitemap(document.frames['theIframe'].document,++index);
        }
    }
      return index-1;
}

Maar nu wordt 'index' natuurlijk steeds overschreven, dus zit ik met hetzelfde probleem.. Daarom had ik al bedacht om een return functie in te bouwen welke de vorige waarde aan index zou kunnen geven. Maar werkt ook dit werkt niet, * r0bert browser" loopt uiteindelijk vast, dus pas dér op met evt testen :)

Iemand suggesties hoe ik het script aan kan passen ?

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Gezien het overweldigende aantal reacties, post ik maar eens de complete source die ik nu heb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<html>
<head>

<script language="JavaScript" type="text/javascript">
domein = 'c:'; //offline testen
var strN = new Array;
link = new Array();
var aLinks = new Array();
function createSitemap (el) {
    checkPage(el,0);
    for (var d = 0; d < strN.length; d++) {
        document.all['linksd'].innerHTML += d + '<br>' + strN[d] + '<br><br><br>';
    }
        
}

function checkPage(el,index) {
    aLinks[index] = el.links;
    for (link[index] in aLinks[index]) {
        if (link[index] == 'length') {

        } else {
            link[index] = aLinks[index][link[index]] + ' ';
            strN[index] += '\t' + link[index] + '<br />';
            if (link[index].indexOf(domein) >= 1) {
                document.all['blaatjedaar'].removeNode('true');
                oDiv = document.createElement('div');
                oDiv.id = 'blaatjedaar';
                oIframe = document.createElement('iframe');
                oIframe.id = 'theIframe';
                oIframe.src = link[index];
                oDiv.appendChild(oIframe);
                document.body.appendChild(oDiv);
                alert(document.frames['theIframe'].location.href);
                index -= checkPage(document.frames['theIframe'].document,++index);
            }
        }
    }
    return index-1;
}

</script>

</head>

<body>
<a href="file:///c:\page2.html">tekst</a>
<a href="file:///d:\donepompom.html">yter</a>
<a href="javascript://" onClick="createSitemap(document);">doe dan</a>

<div id="blaatjedaar">
  <iframe id="theIframe" src="page2.html" width="100" height="100"></iframe>
</div>

<div id="linksd"></div>

</body></html>

met in page2.html een link naar page3.html + 1 externe link
met in page3.html een link naar page4.html + 1 externe link
met in page4.html een link naar 2 externe links.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Is al weer 24h geleden en nog geen reactie ;(

Pagina nog maar even online gezet.. niet dat het veel doet, maar toch..

http://www.sovenewmedia.nl/sitemap.html

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Lijkt mij een typisch recursie probleem, staat hier ook wat over

[topic=292531/1/25]

Volgens mij gaat het in het eerste stuk code dat je post fout omdat die link var globaal is, dan wordt die in de 1e recursie ronde inderdaad overschreven inplaats van dat er speciaal voor in die methode een locale link var wordt gemaakt.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin