webForumDet fria alternativet

Skicka array

JavaScriptur Javascript

7 svar · 203 visningar · startad av skyman

skymanMedlem sedan juli 20012 450 inlägg
#1

Hej!

Jag har en select-box och några knappar.
När jag trycker på en av knapparna så ska vissa val i selectboxen select:as.

Hur bör man göra för att det ska bli som bäst?

<input type="button" name="b1" onClick="" value="Knapp 1">

Jag vill skicka med de id som ska selectas, men hur? Kommaseparerade typ(?):

onClick="SelectLan('12351,15351,355455554');"

Och hur tar jag hand om dem i functionen? Hur "splittar" jag det som jag skickar med?

Är detta ett bra arbetssätt eller finns det nått bättre?

Peter SMedlem sedan dec. 20025 483 inlägg
#2

När man ändå är igång ;)

Red. Glömde att lägga till "return false".

<script type="text/javascript">
<!--

function SelectLan(){
	var
		f=document.forms["f"].elements["s"].options,
		i=f.length,
		a=arguments,
		j=a.length;
	while(i-->0){
		for(var k=0; k < j; k++){
			if(a[k]==f[i].id){
				f[i].selected=true;
				break;
			}
		}
	}

        return false;
};

//-->
</script>

...

<form name="f">
<select name="s" size="10" multiple="multiple">
	<option id="1">ID 1</option>
	<option id="2">ID 2</option>
	<option id="3">ID 3</option>
	<option id="4">ID 4</option>
	<option id="5">ID 5</option>
	<option id="6">ID 6</option>
</select>
<input type="button" onclick="return SelectLan(1,3,6)" value="Knapp 1">
</form>

:)

dectgapMedlem sedan sep. 20021 655 inlägg
#3

Jag är inte säker på om jag förstår frågan rätt.

<script type="text/javascript">
function SelectLan(){
    anArray = new Array();
    for(i=0; i<arguments.length; i++){
        anArray[i]=arguments[i];
        for(j=0; j<document.forms['aForm'].aSelect.options.length; j++){
            if(document.forms['aForm'].aSelect.options[j].value==anArray[i]){
                document.forms['aForm'].aSelect.options[j].selected='selected';
            }
        }
    }
}
</script>

...

<form name="aForm">
<select name="aSelect" multiple="multiple">
 <option value="13515">13515</option>
 <option value="12351">12351</option>
 <option value="15351">15351</option>
 <option value="114555443">114555443</option>
 <option value="355455554">355455554</option>
</select>

<button onClick="SelectLan('12351','15351','355455554');">Välj några</button>
</form>

EDIT:
Självklart hinner Peter S före då mitt script hängde sig när jag hade råkat förväxla ett j med ett i :)

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Hihi :e

skymanMedlem sedan juli 20012 450 inlägg
#5

dectgap-> Jag kan trösta dig med att ditt script fungerade bättre än PeterS, om det beror på mitt okunnande vågar jag inte svara på ;)
Tack så mycket båda :)

skymanMedlem sedan juli 20012 450 inlägg
#6

En undran, hur skall javascriptet se ut om man istället vill skicka detta:

onClick="SelectLan(1_12351,5_15351,1_355455554);"

istället för:

onClick="SelectLan('1_12351','5_15351,'1_355455554');"

som jag har det nu...
Jag har utgått från dectgaps lösning, men kan byta om någon annan vore bättre...

Peter SMedlem sedan dec. 20025 483 inlägg
#7

Varför skulle du vilja göra det om man får fråga? Eftersom dectgaps lösning fungerar finns det väl ingen anledning ändra på det?

"If it ain't broke, don't fix it"

;)

skymanMedlem sedan juli 20012 450 inlägg
#8

If it aint perfect, make it perfect ;)

Strunta i det, jag orkar inte ändra nu... :)

136 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
126 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)