Kann man noch vereinfachen?

  • Themenstarter Themenstarter D@nger
  • Beginndatum Beginndatum
D

D@nger

Hallo,
ich wollte mal fragen, ob man folgenden Code noch vereinfachen kann:
HTML:
  <script language="Javascript">

    function songs()
    {
     Lieder_50 = new Array("21 Questions", "Candy Shop", "In Da Club", "If I Can't", "Just A Lil Bit", "Hate It Or Love It", "How We Do", "Hustlers Ambition", "P.I.M.P.");
     Lieder_dmx = new Array("dmx21 Questions", "Candy Shop", "In Da Club", "If I Can't", "Just A Lil Bit", "Hate It Or Love It", "How We Do", "Hustlers Ambition", "P.I.M.P.");
	 Lieder_em = new Array("em21 Questions", "Candy Shop", "In Da Club", "If I Can't", "Just A Lil Bit", "Hate It Or Love It", "How We Do", "Hustlers Ambition", "P.I.M.P.");



     
     if (interpreten.options[interpreten.options.selectedIndex].text=="50Cent")
       entfernen();
    for (var i = 0; i <= Lieder_50.length-1; i++)
    {
      lied = new Option(Lieder_50[i], false, true);
      singles.options[singles.length] = lied;
    };
    
   if (interpreten.options[interpreten.options.selectedIndex].text=="DMX")
    entfernen();
    for (var i = 0; i <= Lieder_dmx.length-1; i++)
    {
      lied = new Option(Lieder_dmx[i], false, true);
      singles.options[singles.length] = lied;
    };
    
   if (interpreten.options[interpreten.options.selectedIndex].text=="Eminem")
    entfernen();
    for (var i = 0; i <= Lieder_em.length-1; i++)
    {
      lied = new Option(Lieder_em[i], false, true);
      singles.options[singles.length] = lied;
    };
    
    

     intinfos();

    }
    
    function entfernen()
    {
    
     for (var i = 1; i = singles.length; i++)
     {
       singles.options[singles.length - i] = null;
     }
    
    }
    

   function intinfos()
    {
	 Infos.location.href="Interpreten/" + interpreten.options[interpreten.options.selectedIndex].text + ".htm"
    }
    
    
    


  
  </script>

Danke
 
Zuletzt bearbeitet von einem Moderator:
Hallo, ja klar:
HTML:
        <select name="interpreten" size="3" onClick="songs()">
         <option selected>50Cent</option>
         <option>DMX</option>
         <option>Eminem</option>     
        </select> <br>
        <br>
        <b><font face="Arial" color="#D0D0D0">
        Singles:<br>
        </font></b>
        
        <select name="singles" size="3">
         <option>21 Questions</option>
         <option>Candy Shop</option>   
         <option>In Da Club</option>
         <option>If I Can't</option>   
         <option>Just A Lil Bit</option>     
         <option>Hate It Or Love It</option>   
         <option>How We Do</option>   
         <option>Hustlers Ambition</option>   
         <option>P.I.M.P.</option>   
        </select>
 
Es geht in der Tat um einiges einfacher... verwende einen assoziativen Array mit dem Interpreten als Schlüssel...dann musst du nicht für jeden einzeln die Schleife notieren...denn die macht ja überall dasselbe.
Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
    function songs(objList)
    {
      lieder=new Array();
      lieder['50Cent']  =['bla1','bla2','bla3','bla4'];
      lieder['DMX']     =['blubb1','blubb2','blubb3','blubb4'];
      lieder['Eminem']  =['blablubb1','blablubb2','blablubb3','blablubb4'];

      artist=objList.options[objList.selectedIndex].text;
      objList.form.replaceChild(objList.form.singles.cloneNode(false),objList.form.singles);
      for (i = 0; i < lieder[artist].length; ++i)
        {
          lied = new Option(lieder[artist][i], false, true);
          objList.form.singles.options[objList.form.singles.length] = lied;
        };

	    window.Infos.location.href="Interpreten/" + artist + ".htm"
    }
//-->  
</script>
<style type="text/css">
<!--
-->
</style>
</head>
<body>
<form>
  <select name="interpreten" size="3" onChange="songs(this)">
    <option selected>50Cent</option>
    <option>DMX</option>
    <option>Eminem</option>     
  </select><br>
  <select name="singles" size="3">
    <option>hollatrio</option>
  </select>
</form>
</body>
</html>
 
Hallo, das ist echt nett von dir, das sieht wirklich gut aus, aber könntest du bitte in einem Satz erklären was da gemacht wird ;-)?
 
Code:
artist=objList.options[objList.selectedIndex].text;
erstmal den ausgewählten Künstler in einer Variablen speichern, das spart Schreibarbeit.

Code:
objList.form.replaceChild(objList.form.singles.cloneNode(false),objList.form.singles);
Das Leeren der Lieder-Liste. Es wird eine Kopie dieser Liste erstellt, allerdings ohne deren Inhalt...die <option>'s....und die vorhandene Liste dadurch ersetzt...das erspart die Schleife, wie du sie beim leeren hast.

Code:
lieder[artist]
darüber kann man prima auf die Lieder des jeweiligen Künstlers zugreifen... es reicht jetzt eine Schleife, da sich ja nur der Künstler ändert, und nicht der Ablauf innerhalb der Schleife.

Achso...falls dich dies irritiert:
Code:
lieder['50Cent']  =['bla1','bla2','bla3','bla4'];
Das ist dasselbe, als wenn man
Code:
lieder['50Cent']  =new Array('bla1','bla2','bla3','bla4');
...schreibt. Ich finds übersichtlicher, und 9Bytes sparts auch pro Array :-)
 

Neue Beiträge

Zurück