webForumDet fria alternativet

Listbox värde = array ----> som arg till funktion

9 svar · 343 visningar · startad av PatrikB

PatrikBMedlem sedan mars 20002 713 inlägg
#1

Hello,

har en listbox som innehåller en lista med array namn som jag vill "passa" in i en funktion och använda mig av vald array.
frågan är: Går det???

<SELECT name="ListBox" onChange="useArray(value);">

cya,
PatrikB

SPiNMedlem sedan mars 20005 832 inlägg
#2

Jag är inte säker på om JavaScript har en evaluerings-funktion, men jag har för mig det. Annars går det ju att lösa med vanliga, hederliga if-satser eller switch:ar. :)

Testa följande:

var arr = eval ( din_array_string );
document.writeln ( "Första värdet: " + arr[ 0 ] );
PatrikBMedlem sedan mars 20002 713 inlägg
#3

nej, det är inte en array lista utan namnet på en array.
Arrayerna finns redan skapade och kan heta:

arr1
arr2
arr3

SEdan i en listbox finns värdena(array namnen) i value fältet:

value="arr1">...

osv

När jag sedan väljer en "array" från listan så vill jag kunna använda mig av värdena i den i en funktion

cya,
PatrikB

SPiNMedlem sedan mars 20005 832 inlägg
#4

Ja, det var så jag menade också. :)

Antingen kan du testa eval () ( Vilket jag inte är säker på om det funkar ) eller använda if-satser. ( Dock omständigt, så en evaluerings-funktion skulle vara rätt bra )

Alternativ 1:

function useArray ( myStringArray ) {
     // Deklarera dina arrayer här
     var arrayToUse = eval ( myStringArray );
     document.writeln ( "Värde på position 0 i arrayen " + myStringArray + " är " + arrayToUser[ 0 ] );
}

Alternativ 2:

function useArray ( myStringArray ) {
     // Deklarera dina arrayer här
     if ( myStringArray == "arr1" )
          var arrayToUse = arr1;
     if ( myStringArray == "arr2" )
          var arrayToUse = arr2;
}
SPiNMedlem sedan mars 20005 832 inlägg
#5

Har kollat runt lite nu, och funktionen eval () existerar ju faktiskt! :)
Då tycker jag att det bort fungera med exempel nr. 1 jag gav dig, om jag inte har förstått det fel ändå, trots allt. :q :)

Du är väl ute efter nåt liknande?

...
<script language="JavaScript" type="text/javascript">
function useArray () {
     arr1 = [ "Arr1.Pos1", "Arr1.Pos2", "Arr1.Pos3" ];
     arr2 = [ "Arr2.Pos1", "Arr2.Pos2", "Arr2.Pos3" ];
     arr3 = [ "Arr3.Pos1", "Arr3.Pos2", "Arr3.Pos3" ];

     var strArray = document.form[0].selectLista.value;
     arr = eval ( strArray );

     document.spanUno.innerHTML = arr[ 0 ];
     document.spanDos.innerHTML = arr[ 1 ];
     document.spanTres.innerHTML = arr[ 2 ];
}
</script>
...
<form>
<select id="selectLista" name="selectLista" onchange="useArray (); return true;">
<option value="arr1">Ettan!</option>
<option value="arr2">Tvåan!</option>
<option value="arr3">Trean!</option>
</select>
</form>
<span id="spanUno" name="spanUno"></span><br />
<span id="spanDos" name="spanDos"></span><br />
<span id="spanTres" name="spanTres"></span><br />
...

Flummade bara ihop något, förhoppningsvis fungerar det som jag vill. Har inte testat. :)

PatrikBMedlem sedan mars 20002 713 inlägg
#6

thanx!!

eval funkade perfekt!

Det jag vill åstadkomma är att hämta data från databas med asp och sedan populera en första listbox med kategorier. Beroende på vilket val man gör i denna listbox ska en annan listbox populeras med relaterad data som finns "sparade" i javascript arrayer .... så man slipper att ladda om hela sidan och anropa databasen igen.

Nu funkar det galant

Skickar med en zip-fil med testfiler för den intresserade

cya,
PatrikB

SPiNMedlem sedan mars 20005 832 inlägg
#7

Jag sa ju det. :e ;)

Kul att du fick det att funka! :D

PatrikBMedlem sedan mars 20002 713 inlägg
#8

ser att du hann posta medans jag skrev mitt inlägg.
var en felstavning på en variabel (js) som gjorde att det inte funkade först med eval

ett stort tack för hjälpen

cya,
PatrikB

PatrikBMedlem sedan mars 20002 713 inlägg
#9

jepp, kikade på remotescripting först .... men det e lite krångligt och funkar ju endast i IE ..... så bidde bidde en egen halvdan lösning ....

cya,
PatrikB

SPiNMedlem sedan mars 20005 832 inlägg
#10

Ja, det är bra att hålla sig så att det funkar för oss som inte använder IE också. :)
Även om Remote Scripting ( Eller XMLHTTP som är fantastiskt användbart! ) är något som skulle vara kul att ha med i standarden.

Så länge det funkar, så! :bire

ett stort tack för hjälpen

Var sin ko! Det är därför jag sitter här! ;)

Genererad på 373 ms · cache AV · v20260730165559-full.f96bc7eb