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
9 svar · 343 visningar · startad av PatrikB
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
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 ] );
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
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;
}
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. :)
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
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
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
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! ;)