[JS]Name als array uitlezen
Beste mensen ,
ik heb een dynamische lijst met inputs. De naam van deze inputs is als volgt :
Hiervan is de eerste key dynamisch.
Nu wil ik in JS dit als 2 dimentionale array uitlezen.
Daarvoor heb ik tot nu toe de volgende code
Nu krijg ik alleen de volgende error:
Iemand enig idee hoe ik dit kan oplossen?
ik heb een dynamische lijst met inputs. De naam van deze inputs is als volgt :
Hiervan is de eerste key dynamisch.
Nu wil ik in JS dit als 2 dimentionale array uitlezen.
Daarvoor heb ik tot nu toe de volgende code
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function createArrayFromName(elName , inpTyp , src)
{
if(!src)
{
src = document ;
}
var allElements = src.getElementsByTagName(inpTyp) ;
var myReturn = new Array() ;
for(var el in allElements)
{
var myEl = allElements[el] ;
if(myEl.name.match('^'+elName+'.+'))
{
var myData = myEl.name.split('[');
myData[1] = myData[1].replace(']','');
myData[2] = myData[2].replace(']','');
myReturn[myData[1]][myData[2]] = myEl.value
}
}
return myReturn ;
}
console.log(createArrayFromName('project' , 'input' , $('hours_list')))
{
if(!src)
{
src = document ;
}
var allElements = src.getElementsByTagName(inpTyp) ;
var myReturn = new Array() ;
for(var el in allElements)
{
var myEl = allElements[el] ;
if(myEl.name.match('^'+elName+'.+'))
{
var myData = myEl.name.split('[');
myData[1] = myData[1].replace(']','');
myData[2] = myData[2].replace(']','');
myReturn[myData[1]][myData[2]] = myEl.value
}
}
return myReturn ;
}
console.log(createArrayFromName('project' , 'input' , $('hours_list')))
Nu krijg ik alleen de volgende error:
Iemand enig idee hoe ik dit kan oplossen?
Edit: Oh, ik zit verkeerd te kijken. Wat een vreemde error... Kijk alsnog eens wat myData[1] bevat?
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
al opgelost
En voor de mensen die het willen gaan gebruiken, op het moment werkt het alleen met 2 dimentionale arrays. Named keys heb ik niet getest maar zou haast wel moeten werken
Code (php)
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
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
this.createArrayFromName = function(elName , inpTyp , src)
{
if(!src)
{
src = document ;
}
var allElements = src.getElementsByTagName(inpTyp) ;
var myReturn = new Array() ;
for(var el in allElements)
{
var myEl = allElements[el] ;
if(myEl.name && myEl.name.match('^'+elName+'.+'))
{
var myData = myEl.name.split('[');
myData[1] = myData[1].replace(']','');
myData[2] = myData[2].replace(']','');
if(!myReturn[myData[1]])
{
myReturn[myData[1]] = new Array()
}
myReturn[myData[1]][myData[2]] = myEl.value
}
}
return myReturn ;
}
{
if(!src)
{
src = document ;
}
var allElements = src.getElementsByTagName(inpTyp) ;
var myReturn = new Array() ;
for(var el in allElements)
{
var myEl = allElements[el] ;
if(myEl.name && myEl.name.match('^'+elName+'.+'))
{
var myData = myEl.name.split('[');
myData[1] = myData[1].replace(']','');
myData[2] = myData[2].replace(']','');
if(!myReturn[myData[1]])
{
myReturn[myData[1]] = new Array()
}
myReturn[myData[1]][myData[2]] = myEl.value
}
}
return myReturn ;
}
En voor de mensen die het willen gaan gebruiken, op het moment werkt het alleen met 2 dimentionale arrays. Named keys heb ik niet getest maar zou haast wel moeten werken
Mensen, ik bump hem eens even, deze functie moet nu namelijk recursief gaan worden en dus gaan werken met array's van in theorie oneindige dieptes
Heb alleen geen idee hoe ik dat moet gaan aanpakken.
Kan iemand me een zetje in de goede richting geven?
Heb alleen geen idee hoe ik dat moet gaan aanpakken.
Kan iemand me een zetje in de goede richting geven?
Kan je niet met een if(is_array()) of in elk geval zoiets kijken dat je dan de functie opnieuw aanroept vanuit de functie?
Je krijgt dan zo'n constructie (php voorbeeld, maar moet voor js ook werken):
Wanneer de name nog een array is, dan roep je met die array de functie opnieuw aan. Dat gaat allemaal automatisch en dat is ook hetgeen wat we recursief noemen.
Je krijgt dan zo'n constructie (php voorbeeld, maar moet voor js ook werken):
Code (php)
Wanneer de name nog een array is, dan roep je met die array de functie opnieuw aan. Dat gaat allemaal automatisch en dat is ook hetgeen wat we recursief noemen.
Probleem is, het is nog geen array, dat moet het nog gaan worden.
Ik heb dit aan data :
En dat moet :
Ik heb dit aan data :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
array("project", "2", "1");
array("project", "2", "2");
array("project", "2", "3");
array("project", "2", "4");
array("project", "2", "5");
array("project", "2", "6");
array("project", "2", "7");
array("project", "1", "1");
array("project", "1", "2");
array("project", "1", "3"]);
array("project", "1", "4");
array("project", "1", "5");
array("project", "1", "6");
array("project", "1", "7");
array("project", "2", "2");
array("project", "2", "3");
array("project", "2", "4");
array("project", "2", "5");
array("project", "2", "6");
array("project", "2", "7");
array("project", "1", "1");
array("project", "1", "2");
array("project", "1", "3"]);
array("project", "1", "4");
array("project", "1", "5");
array("project", "1", "6");
array("project", "1", "7");
En dat moet :
bump
en als je nou eens zou doen op deze manier?
project[1][]
project[1][]
project[1][]
project[2][]
project[2][]
Dan kan je met getelementsbyname met "project[1][]" allen ophalen en dan nog eens met "project[2][]" de andere...
project[1][]
project[1][]
project[1][]
project[2][]
project[2][]
Dan kan je met getelementsbyname met "project[1][]" allen ophalen en dan nog eens met "project[2][]" de andere...




