Als je bij GMail meerdere attachments aan je bericht wil toevoegen, hebben ze hier een hele mooie interface voor:

Telkens als je op "Attach another file" klikt, krijg je een nieuwe file input box. Ook kun je alle aangemaakte file inputs verwijderen ("remove").
Eenzelfde interface zou ik graag voor mijn eigen website hebben. Ik ben eerst naar de gmail source gaan kijken maar heb dat al snel opgegeven: die is niet te lezen. Dus dan maar zelf doen
Ik ben nu zover dat ik file inputs kan toevoegen en ze een unieke id mee kan geven.
Ik heb alleen geen idee hoe ik nu een file input moet verwijderen. Ik heb dit als remove functie geprobeerd:
Maar dan krijg ik een NaN error, waarschijnlijk omdat je strings wel kunt optellen (zoals bij de add() functie) maar niet zomaar kunt aftrekken van elkaar. Eigenlijk is het ook geen optellen, maar eerder "aan elkaar plakken" van twee strings, natuurlijk...
Mijn vragen zijn:

Telkens als je op "Attach another file" klikt, krijg je een nieuwe file input box. Ook kun je alle aangemaakte file inputs verwijderen ("remove").
Eenzelfde interface zou ik graag voor mijn eigen website hebben. Ik ben eerst naar de gmail source gaan kijken maar heb dat al snel opgegeven: die is niet te lezen. Dus dan maar zelf doen
Ik ben nu zover dat ik file inputs kan toevoegen en ze een unieke id mee kan geven.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <script> var num_files = 0; function remove(id) { // ? } function add() { num_files++; var div = document.getElementById('files').innerHTML; var str = '<input id="image_'+num_files+'" type="file">'+ '<a href="javascript: remove('+num_files+')">remove</a><br>'; document.getElementById('files').innerHTML = div+str; } </script> <div id="files"> <input id="image_0" type="file"><br> </div> <a href="javascript: add()">Nog een plaatje uploaden</a> |
Ik heb alleen geen idee hoe ik nu een file input moet verwijderen. Ik heb dit als remove functie geprobeerd:
code:
1
2
3
4
5
6
| function remove(id) {
var div = document.getElementById('files').innerHTML;
var str = (document.getElementById('image_0')); //test
document.getElementById('files').innerHTML = div-str;
} |
Maar dan krijg ik een NaN error, waarschijnlijk omdat je strings wel kunt optellen (zoals bij de add() functie) maar niet zomaar kunt aftrekken van elkaar. Eigenlijk is het ook geen optellen, maar eerder "aan elkaar plakken" van twee strings, natuurlijk...
Mijn vragen zijn:
- met welke aanpassing is de remove functie werkend te krijgen? (volgens mij is het iets kleins?)
- is dit ueberhaupt wel een goede manier om de html in een browser te manipuleren? Ik heb er ook aan gedacht om elke file input in een aparte tabel rij te zetten, en dat ik dan de <tr > met de goede id in zijn geheel verwijder. Dat is misschien netter, hoewel tabellen symantisch gezien daar niet voor bedoeld zijn...
[ Voor 20% gewijzigd door Reveller op 03-07-2005 19:53 ]
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
