skymanMedlem sedan juli 20011 347 inlägg
Jag hämtar options från mitt formulär.
Värderna är semikolonseparerade och jag hämta fler, ty det är en multiple...
Nu vill jag slå ihop alla värden i en array som jag ska skicka till en annan funktion...
<select name="Kom" multiple="multiple">
<option value="1_980386">Berg (1)</option>
<option value="1_980247,1_980464">Strömsund (2)</option>
<option value="1_980104,1_980510">Åre (2)</option>
<option value="1_980061,1_980174,1_1212937,1_1202022,1_980368,1_980590">Östersund (6)</option>
</select>
Hur skriver jag en function som lägger ihop de till en array.
Om jag väljer Berg och Strömsund vill jag ha en array som ser ut som: array(1_980386,1_980247,1_980464)...
skymanMedlem sedan juli 20011 347 inlägg
function MarkSelected(opt){
var src = document.form.elements["Kom"], save = [], temp = "";
for(i=0; i<src.length; i++) {
if(src[i].selected) {
// Kör en explode på src
temp = src[i].value.split(",");
for(x=0; x<temp.length; x++){
[b]save[]=temp[x];[/b]
alert("1");
}
}
}
bla bla bla bla
Hur skriver man den feta raden, dvs tilldelningen till en array i javascript?
colioneMedlem sedan juni 20013 386 inlägg
save[x]=temp[x]? eller vad vill du göra?
dectgapMedlem sedan sep. 20021 542 inlägg
skymanMedlem sedan juli 20011 347 inlägg
Jag vill ha en array som ser ut såhär:
Array(
1_6546546,
1_418717,
1_1681678)
dectgapMedlem sedan sep. 20021 542 inlägg
function MarkSelected(opt){
var src = document.form.elements["Kom"], temp = "";
var save = new Array();
for(i=0; i<src.length; i++) {
if(src[i].selected) {
// Kör en explode på src
temp = src[i].value.split(",");
for(x=0; x<temp.length; x++){
save[save.length]=temp[x];
alert("1");
}
}
}
bla bla bla bla
colioneMedlem sedan juni 20013 386 inlägg
dectgap skrev:
Börja med att deklarera arrayn först också:
Det har han gjort också: save=[]
skymanMedlem sedan juli 20011 347 inlägg
Jag vill ha en endimensionell array, inte två...
save[] = temp[x] ger en endimensionell, men det blir fel...
save[x] = temp[x] fungerar, men jag vill inte ha en array som ser ut så.
dectgapMedlem sedan sep. 20021 542 inlägg
Jag var (är) osäker på om det räcker att skriva save = [] för att göra save till en array, men hur som helst räcker det inte att skriva save[] = nånting för att lägga till något till arrayn. Dessutom funkar det inte heller att skriva save[x] = temp[x] eftersom om det finns flera alternativ valda i select-menyn skrivs de gamla värdena i save bara över.
skymanMedlem sedan juli 20011 347 inlägg
dectgap skrev:
Dessutom funkar det inte heller att skriva save[x] = temp[x] eftersom om det finns flera alternativ valda i select-menyn skrivs de gamla värdena i save bara över.
Precis, hur gör man då? :)
dectgapMedlem sedan sep. 20021 542 inlägg
Har du testat det jag skrev?
save[save.length]=temp[x];
JojoxxMedlem sedan juni 20004 306 inlägg
dectgaps variant fungerar. Men sedan har du även javascripts funktion; concat som är till för att just lägga till ett värde eller en array till en array.
save=save.concat(temp[x]);
skymanMedlem sedan juli 20011 347 inlägg
Hmmm...
Jag vill att den här koden ska generera samma typ av slutprodukt som onClick-eventet nedan.
function MarkSelected(opt){
var src=document.form.elements["Kom"],temp = new Array(),save = new Array();
for(i=0; i<src.length; i++) {
if(src[i].selected) {
temp = src[i].value.split(",");
for(x=0; x<temp.length; x++){
save=save.concat(temp[x]);
}
}
}
Select_s1(save);
};
function Select_s1() {
anArray = new Array();
for(i=0; i<arguments.length; i++){
anArray[arguments[i]]=1;
[b]alert(arguments[i]);[/b]
}
...
<input type='button' value='Region 0 (10)' onClick="return Select_s1('1_980054','1_1210900','1_980350','1_1205661','1_980516','1_980567','1_1205735','1_1204046','1_1206422','1_1207763');">
Men, när jag klickar på knappen så visas en och en i en alert (se fet stil), men när jag "går via" MarkSelected() så skrivs id:na ut kommaseparerade...
Jag vill kunna använda Select_s1 till båda...
skymanMedlem sedan juli 20011 347 inlägg
Om jag anropar funktionen och skickar med följande så fungerar det:
Select_s1('1_980138','1_980186','1_980324','1_980433');
Men hur ska jag göra för att få en liknande sträng/array eller vad det är jag skickar med detta:
var src=document.form.elements["Kom"],temp = new Array(),save = new Array();
for(i=0; i<src.length; i++) {
if(src[i].selected) {
temp = src[i].value.split(",");
for(x=0; x<temp.length; x++){
save=save.concat(temp[x]);
}
}
}
Select_s1(save);
Selectboxen "Kom" kan se ut såhär med varierande antal kommaseparerade strängar:
<option value="1_980061,1_980174,1_1212937,1_1202022,1_980368,1_980590">Östersund (6)</option>