Avatar billede henrywood Nybegynder
20. juli 2002 - 22:22 Der er 16 kommentarer og
1 løsning

Fra select box til streng - Opdeling ??

Hej !

Er der nogen der kan hjælpe med at lave et script der kan tage hvert element i en select og trinvist bygge en ny streng. Dette er et eksempel på hver options text (ikke value) i denne select:

css1.css: body
css1.css: .body
css2.css: .mintekst

og så når man trykker på en knap gennemløbes select'ens text for hver option og producerer een ny streng, hvor der for hver stylesheet-fil der blev fundet i selecten (det før :) laves een (og kun een) linie i den nye streng, f.eks således:

<link rel="stylesheet" href="css1.css" type="text/css">
<link rel="stylesheet" href="css2.css" type="text/css">

og så skriver den nye streng ud i en alert-box ?

Der er 100 points til den der først skriver dette som en færdig funktion ...

Henrik
Avatar billede =maddog= Nybegynder
20. juli 2002 - 22:37 #1
hvilke browsere?
Avatar billede =maddog= Nybegynder
20. juli 2002 - 22:44 #2
this.options[selectedIndex].firstChild.data virker i nyere browsere.
<form>
<select name="s" onchange="alert(this.options[selectedIndex].firstChild.data);">
<option value="1">et</option>
<option value="2">to</option>
<option value="3">tre</option>
<option value="4">fire</option>
</select>
</form>
jeg kan godt lave en funktion til dig hvis du gerne vil have det, men det skulle være lige ud af landevejen.
Avatar billede =maddog= Nybegynder
20. juli 2002 - 22:58 #3
jeg laver en funktion øjeblik
Avatar billede =maddog= Nybegynder
20. juli 2002 - 23:14 #4
here u are. with love. bare vælg et punkt i selecten, og den alerter dine styles. Der er en seperat funktion, der høster dem, så du kan gøre som det passer dig med dem.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <title>Untitled - XHTML 1.0</title>
  <script type="text/javascript">
  /* JAVASCRIPT */
  var foundStyles = new Array();
  var styleCount = 0;
    function collectStyles(selObj) { // samler vore styles
    for (i=0; i != selObj.options.length; i++) {
      var styleRoot = selObj.options[i].firstChild.data.split(':')[0]; // før :
      if (styleRoot.indexOf('css')==-1) continue; // ikke indeholdende css fil.
      if (styleCount == 0) { foundStyles[0] = '<link type="text/css" href="'+styleRoot+'" rel="stylesheet">'; styleCount++;} //1.
      else { // andre. vi bliver nød til at checke om vi har fundet den før.
        bool = false; // denne bliver true hvis vi har fundet stylen før..
        for (j=0; j!= foundStyles.length; j++) {
          if (bool) continue;
          bool = (foundStyles[j] == '<link type="text/css" href="'+styleRoot+'" rel="stylesheet">')?true:false;
        }
        if (!bool) {foundStyles[styleCount] = '<link type="text/css" href="'+styleRoot+'" rel="stylesheet">'; styleCount++; }
      }
    }
    // alle vore styles ligger nu i foundStyles til fri afbenyttelse vi kan vælge hvordan vi behandler dem i en senere function
    return foundStyles;
    }
   
    function alertStyles(selObj) { // sender vore style ud i en alert
      var colStyles = collectStyles(selObj);
      var ret ="";
      for (i=0; i!=colStyles.length; i++) {
      ret += colStyles[i] + "\n";
      }
      alert(ret);
    }
  </script>
</head>
<body>
<form>
<select name="s" onchange="alertStyles(this);">
<option value="1">css1.css: body</option>
<option value="2">css1.css: Richard</option>
<option value="3">css2.css: Arme riddere</option>
<option value="4">css2.css: Lokumsen</option>
</select>
</form>
</body>
</html>
Håber den er i vinkel.
Avatar billede =maddog= Nybegynder
20. juli 2002 - 23:21 #5
der er en online version her
www.dsr.kvl.dk/~maddog/237657.html
hvorfor kan du ikke bruge value?
Avatar billede henrywood Nybegynder
20. juli 2002 - 23:27 #6
Det var hurtigt maddog :-))

Den er der næsten, men måske jeg ikke helt forklarede godt nok. Hvis du nu udvider koden med to knapper således: Hver gang man klikker på den ene ("vælg style") huskes, hvilke tekst der er pt. er i select texten og så tilføjes til den nye streng, hvis en linie ikke allerede indeholder den LINK REL.

Klikker man på den anden knap vises den nye streng i en alert

Der er ikke langt til pointene ...
Avatar billede henrywood Nybegynder
20. juli 2002 - 23:32 #7
value indeholder noget andet ikke direkte relaterer til dette problem....
Avatar billede henrywood Nybegynder
20. juli 2002 - 23:33 #8
Browsere: IE 5.5 +
Avatar billede =maddog= Nybegynder
20. juli 2002 - 23:39 #9
for at være ærlig vidste jeg heller ikke helt hvad du ville have så jeg lavede de to funktioner som 'catch all'. De er nemt lavet om. giv mig lidt tid.
mht. browser. no probs afaik :->
Avatar billede =maddog= Nybegynder
20. juli 2002 - 23:48 #10
jeg lader dem stadig være i et Array. Er det ok? Det er nemt at lave en toString metode og omforme dem til string.
Avatar billede henrywood Nybegynder
20. juli 2002 - 23:50 #11
tja
Avatar billede =maddog= Nybegynder
20. juli 2002 - 23:53 #12
ok jeg havde nok håbet på et lidt mere beslutsomt svar :)
Avatar billede henrywood Nybegynder
20. juli 2002 - 23:54 #13
Den alertStyles funktion fungerer da som toString-metode eller hvad ?
Avatar billede =maddog= Nybegynder
20. juli 2002 - 23:56 #14
nu har du lidt mere at lege med. er det ok?
www.dsr.kvl.dk/~maddog/237657.html
??
Avatar billede =maddog= Nybegynder
20. juli 2002 - 23:58 #15
alertStyles er to-i-en. Den burde spaltes op i en toString der returner en string man kan sætte ind i en alert box. men hvad pokker, man er vel doven. Grunden til at det er smartest at bruge arrays er at det er (efter min mening) lidt smartere når man skal checke om stylen er fundet før.
Avatar billede henrywood Nybegynder
21. juli 2002 - 00:36 #16
Ja, lige hvad jeg mente
100 stærke til dig ... :)
Tak !
Avatar billede =maddog= Nybegynder
21. juli 2002 - 00:40 #17
no problems. nu har jeg endnu et mageløst script i mit efterhånden uoverskuelige lager.
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