Scusate l'ingoranza... mi rendo conto che è una domanda forse banale
ma è possibile unire due array in modo da crearne uno solo?
grazie
Scusate l'ingoranza... mi rendo conto che è una domanda forse banale
ma è possibile unire due array in modo da crearne uno solo?
grazie
scusami saresti anche così gentile da spiegarmi xkè mi va in errore?
inputs.concat is not a function
codice:var inputs = new Array; inputs = document.getElementsByTagName('input'); //array contenente tutti i campi di tipo input var selects = new Array; selects = document.getElementsByTagName('select'); //array contenente tutti i campi di tipo select var tutti = new Array; tutti = inputs.concat(selects);
se non sbaglio la corretta definizione di un array e'
new Array()
con le tonde
ad ogni modo secondo me ti conviene fare:
var tutti = Array.concat(inputs, selects);
credo che in questo modo mi crea un array di array;
xkè se l'array inputs ha 4 elementi e l'array select ha 2 elementi, dopo la funzione
var tutti = Array.concat(inputs, selects);
se provo a fare
alert(tutti.length);
mi restituisce 2
che ne pensi?
l' intoppo e' nel credere che getElementsByTagName ritorni un array,
ritorna un' HTMLCollection, una lista di elementi
se vuoi ottenere un array a tutti gli effetti devi ciclare e fare push nel tuo array per ogni elemento della lista,
poi puoi usare concat, sort, reverse ...
Non proprio,
con gli array creati "a mano" funziona proprio come ipotizzo io.
nel senso che se tu crey un array ex novo e man mano lo riempi di oggetti, allora la funzione Array.concat() crea un nuovo array che e' il concatenemento dei precedenti
Faccio un'ipotesi e aspetto che Xinod ci dica qualcosa di piu':
Credo che cio' che viene restituito dal getElemensBy... non sia proprio un array ma un oggetto diverso.
Infatti prova a fare alert(inputs)
e dovresti vedere "object HTML Collection".
A questo punto credo sia meglio fare due cicli for e creare il nuovo array cosi'
edit: ecco, Xinod ha gia' risposto sopra!
a quanto pare non era così banale come pensavo,
cmq ho imparato un altra cosa... vi ringrazio
ps ho risolto scorrendo le due "collezioni" due volte con due for
grazie ancora!