[js] createElement en name tag

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Okj .. ik zal maar meteen beginnen met m'n scriptje te posten:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
<script language="JavaScript" type="text/javascript">
function createNewDochter(theId) {
    hIndex = 0;
    alert(theId);
    for (var i = 0; i < document.forms['overzicht'].elements.length; i++) {
        thisName = document.forms['overzicht'].elements[i].name;
        if (thisName.indexOf(theId) >= 0) {
            daIndex = thisName.charAt(12);
            if (hIndex < daIndex) {
                hIndex = daIndex;
            }
        }

    }
    oInput = document.createElement('<input>');
    oInput.name = theId + '[' + ++hIndex +']';
    document.all[theId +'Div'].innerHTML += '<br />Dochter: ';
    document.all[theId +'Div'].appendChild(oInput);
}

function createNew() {
    
    hIndex = 0;
    for (var i = 0; i < document.forms['overzicht'].elements.length; i++) {
        thisName = document.forms['overzicht'].elements[i].name;
        if (thisName.indexOf('trefwoord[') >= 0) {
            daIndex = thisName.charAt(10);
            if (hIndex < daIndex) {
                hIndex = daIndex;
            }
        }

    }
    
    oDiv = document.createElement('div');
    oDiv.id = 'dochters['+ ++hIndex + ']';
    oDiv.innerHTML += "Trefwoord: ";
    oInput1 = document.createElement('input');
    oInput1.name = 'trefwoord['+ hIndex +']';
    oDiv.appendChild(oInput1);
    oDiv.innerHTML += "<br />Dochter: ";
    oInput2 = document.createElement('input');
    oInput2.name = 'dochters['+ hIndex +'][0]';
    oDiv.appendChild(oInput2);
    document.all['inputDiv'].appendChild(oDiv);
    document.all['inputDiv'].innerHTML += '<a href="javascript: createNewDochter(\'dochters[' + hIndex + ']\'); void(0);">Nieuwe dochter</a><a href="javascript: createNew(); void(0);">Nieuwe trefwoord</a>';
}
</script>

<form name="overzicht" method="post" action="">

<div id="inputDiv">
    <div id="dochters[0]Div">
        Trefwoord: <input type="text" name="trefwoord[0]"><br />
        Dochter: <input type="text" name="dochters[0][0]">
    </div>
    <a href="javascript: createNewDochter('dochters[0]'); void(0);">Nieuwe dochter</a>
    
    <hr />
    
    <div id="dochters[1]Div">
        Trefwoord: <input type="text" name="trefwoord[1]"><br />
        Dochter: <input type="text" name="dochters[1][]">
    </div>
    <a href="javascript: createNewDochter('dochters[1]'); void(0);">Nieuwe dochter</a>
    <a href="javascript: void(0);" onClick="createNew();">Nieuw Trefwoord</a>
</div>

<input type="submit" name="blaat" value="submit">
</form>

Dit scriptje moet er voor zorgen dat je dmv 1 klik een nieuw veld met een input voor een trefwoord en een startpaginadochter te zien krijgt.
Als zo'n veld aangemaakt is, moet je ook nog weer de mogelijkheid hebben om een extra dochter toe te voegen, maar dit lukt niet goed.

het probleem is dat ik de elementen aanmaak dmv createElement en vervolgens een name toevoeg waarna ik ze aan het document verbindt. Maar die name wordt niet toegevoegd tot de DOM als het ware. Als ik alle FORM-elementen bij langs gaat, hebben deze velden dus helemaal geen name meer ofzo ..

Er staat een levend voorbeeld op:
http://www.sovenewmedia.nl/test4.php

alvast bedankt :D

Verwijderd

Wellicht dat het wel werkt met createAttribute() en setAttributeNode()

Dan maak je aan de DOM duidelijk dat je aan element nodes en atributes zit te rommelen, in plaats van zomaar een object een extra property toe te kennen.

[edit]
Best grappig: je bent bezig met DOM, en je gebruikt document.all[] in plaats van document.getElementById() :)

Dat vind ik niet erg logisch, het neemt een beetje het nut van de standaardisering weg ;)

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ow.. eerlijk gezegd snap ik dat verschil niet zo goed.
Maar maakt niet uit, het gaat er ten eerste even om, dat de pagina goed werkt, is toch alleen maar privé bedoeld

Verwijderd

Op dinsdag 30 april 2002 10:20 schreef r0bert het volgende:
Ow.. eerlijk gezegd snap ik dat verschil niet zo goed.
Cheatah bedoelt, dat je met DOM Level 2 (geloof ik) bezig bent, dan ligt het niet voor de hand dat je document.all (IE only) gebruikt, maar kiest voor document.getElementById (DOM browser compatible, zoals Mozilla/NS 6.x Konqueror).

Het is gewoon niet echt logisch wat je doet.