Avatar billede dan_n Nybegynder
16. juni 2004 - 12:39 Der er 11 kommentarer og
1 løsning

problem med if-aætning i array

Hey

jeg har et script som ikke virker efter hensigten, og jeg kan ikk lige gennemskue hvor fejlen ligger, så hvis nogle af jer JavaScript Exp'er lige vil tage et kig.

Jeg har et array:
var aProd=new Array();
aProd["1|Rossignol 9X - 6500 kr."]     = 2;
aProd["3|Scream Burning hot - 7000kr."] = 1;
aProd["4|Salomon Equipe 10 3V - 6000kr."] = 2;
aProd["6|Slomon 1080 - 4500 kr."] = 4;
aProd["7|Rossignol Scratch FS - 5000 kr."]     = 4;
aProd["8|K2 public Emeny - 3500 kr."] = 4;
aProd["9|Dynastar Troublemaker - 4200 kr."] = 4;


Hvor jeg gerne skal have mit script til at vælge nogle specifikke stringe ud. fx alle hvor aProd = 4.

Dette virker egentlig også godt nok, ved den første, men er der flere med fx aProd = 4, udskrives kun den første og scriptet går i hårdknude.

Det hele kan ses her:
http://localhost/cms/shop/array.htm

function getProd(n){
  for( var i in aProd){

    if (aProd[i] == n) {
      document.write(i)
        }else{
      document.write("ingen match")
    return;
    }
  }
}
Avatar billede skovenborg Nybegynder
16. juni 2004 - 12:45 #1
prøv med:
function getProd(n){
  str = "";
  for( var i in aProd){

    if (aProd[i] == n) {
      str += i+"<br />";
        }
    }
    if (str != "") {document.write(str);}
  else {document.write("Ingen match");}
  }
  getProd(4);

Hvis det er det du vil have den til altså ;-)
Avatar billede yellow Nybegynder
16. juni 2004 - 12:47 #2
Tror bare du skal fjerne din "return;"-linie fra getProd(n) funktionen...
Avatar billede roenving Novice
16. juni 2004 - 13:04 #3
-- og skovenborgs kan endda forkortes:

function getProd(n){
  str = "";
  for( var i in aProd){
    str += (aProd[i] == n)?i+"<br />":"";
  }
    if (str != "") {document.write(str);}
  else {document.write("Ingen match");}
  }
Avatar billede dan_n Nybegynder
16. juni 2004 - 13:08 #4
> skovborg
Lige præcis.
Der er dog stadigvæk et problem med scriptet. Jeg sidder med en firefox browser og her bliver scriptet ved at køre efter den har udskrevet strengene fra arrayet. Det virker som om det bliver ved med at loope sig selv.

Har du evt en løsning på det ??
Avatar billede dan_n Nybegynder
16. juni 2004 - 13:09 #5
Scriptet kan ses på http://skitips.dk/exp/array.htm
Avatar billede skovenborg Nybegynder
16. juni 2004 - 13:16 #6
det pga. document.write som ikke er videre god at bruge når dokumentet allerede er loadet:
function getProd(n){
  str = "";
  for( var i in aProd){

    if (aProd[i] == n) {
      str += i+"<br />";
        }
    }
    o = document.getElementById("stdout");
    if (str != "") {o.innerHTML = str}
  else {o.innerHTML = "Ingen match"}
  }

Og hvor du har en div der hedder stdout:
<div id="stdout"></div> - bare et sted i dokumentet
Avatar billede skovenborg Nybegynder
16. juni 2004 - 13:16 #7
og med roenvings lille forkortelse:'
function getProd(n){
  str = "";
  for( var i in aProd){
    str += (aProd[i] == n)?i+"<br />":"";
  }
    o = document.getElementById("stdout");
    if (str != "") {o.innerHTML = str}
  else {o.innerHTML = "Ingen match"}
  }
Avatar billede dan_n Nybegynder
16. juni 2004 - 13:21 #8
Det er simpel hen max verdensklasse !!! Takker
post lige et svar, så der der points til dig
Avatar billede roenving Novice
16. juni 2004 - 13:23 #9
-- og dit problem med at det så ud til at den fortsatte var, at documentet ikke blev lukket, så der f.eks. skulle stå:

    if (str != "") {document.write(str);}
  else {document.write("Ingen match");}
  document.close();

-- bemærk også, at du har en tavetosse i language !-)
Avatar billede skovenborg Nybegynder
16. juni 2004 - 13:39 #10
og her er et svar til til :-)
Avatar billede dan_n Nybegynder
16. juni 2004 - 22:00 #11
Jeg takker endnu en gang.
Avatar billede skovenborg Nybegynder
16. juni 2004 - 22:42 #12
og jeg takker for points :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester