gertru.de: Wie kann ich das vereinfachen?

Hallo ihr da draussen!

Ich will diesen Code möglichst vereinfachen, da noch einige Möglichkeiten auf der endgültigen Seite dazukommen, hab aber keine Idee wie. Wer kann mir da helfen?

if(x == "bla1" || x == "bla2" || x == "bla3")
  h = 80;
else if(x == "bla1" || x == "bla2" || x == "bla3")
  h = 100;
else if(x == "bla3" || x == "bla4")
  h = 120;
else if(x == "bla5" || x == "bla5" || x == "bla7" || x == "bla8" || x == "bla9" || x == "bla10")
  h = 140;
else if(x == "bla11" || x == "bla12" || x == "bla13")
  h = 160;
else if(x == "bla14")
  h = 180;
else
  h = 200;

Danke eure getru.de

  1. Entschuldigung! Muß so heissen:

    if(x == "bla")
      h = 80;
    else if(x == "bla0" || x == "bla1" || x == "bla2")
      h = 100;
    else if(x == "bla3" || x == "bla4")
      h = 120;
    else if(x == "bla5" || x == "bla6" || x == "bla7" || x == "bla8" || x == "bla9" || x == "bla10")
      h = 140;
    else if(x == "bla11" || x == "bla12" || x == "bla13")
      h = 160;
    else if(x == "bla14")
      h = 180;
    else
      h = 200;

  2. Hallo "getru.de" !
    Ich finde die Sitte seine "realen" Namen zu verwenden nicht schlecht.
    Zu deinem Problem:
    Ich nehme mal an dein Code ist PHP oder Javascript?
    In beiden Fällen kannst du es sehr gut mit "case" vereinfachen.
    Es wird aber schwierig sein, bla1 gleichtzeitig h=80 UND h=100 zuzuweisen.
    Wenn du Zonen definieren willst, müsstest du am Besten dabeisagen wie die implizite Logic dahinter aussieht...

    Viele gruesse
    Thorsten

    1. Hallo Thorsten,

      Ich nehme mal an dein Code ist PHP oder Javascript?

      Javascript, deshalb der Topic ;-)

      In beiden Fällen kannst du es sehr gut mit "case" vereinfachen.
      Es wird aber schwierig sein, bla1 gleichtzeitig h=80 UND h=100 zuzuweisen.

      Das war ein Copy&Paste Fehler, siehe meine Verbesserung. Was Case angeht, es gibt immer mehrere Möglichkeiten, die muß ich doch auch mit Case jeweils einzeln abfragen, oder?

      Wenn du Zonen definieren willst, müsstest du am Besten dabeisagen wie die implizite Logic dahinter aussieht...

      Also, es werden verschiedene Layer ausgetauscht. Das funktioniert. Je nachdem, welcher Link angeklickt wurde, soll zusätlich eine Art 'Reiter' bewegt werden. Und die Variable h gibt dann den top-Wert. Das Problem ist, das die Möglichkeit besteht, das z.B. für 80 Links ein h-Wert möglich ist. Verstanden?

      Danke, gertu.de

  3. Hallo ihr da draussen!

    Ich will diesen Code möglichst vereinfachen, da noch einige Möglichkeiten auf der endgültigen Seite dazukommen, hab aber keine Idee wie. Wer kann mir da helfen?

    if(x == "bla1" || x == "bla2" || x == "bla3")
      h = 80;
    else if(x == "bla1" || x == "bla2" || x == "bla3")
      h = 100;
    else if(x == "bla3" || x == "bla4")
      h = 120;
    else if(x == "bla5" || x == "bla5" || x == "bla7" || x == "bla8" || x == "bla9" || x == "bla10")
      h = 140;
    else if(x == "bla11" || x == "bla12" || x == "bla13")
      h = 160;
    else if(x == "bla14")
      h = 180;
    else
      h = 200;

    Danke eure getru.de

    Hallo!
    Schick das nächste mal bitte den Originalcode, dieser ist ziemlich unbrauchbar (da in einigen Fällen zuerst 80, dann 90 für h zugewiesen wird). Mein Vorschlag:

    switch(x) {
     case bla1:
      h = 1;
      break;
     case bla2:
      h = 2;
      break;
     case bla3:
      h = 3;
      break;
     case bla4:
      h = 4;
      break;
    ...
     default:
     h = 99;
     break;
    }
    Suchst du so etwas in der Art?
    mfg

    Thomas

    1. Hallo Thomas,

      Schick das nächste mal bitte den Originalcode, dieser ist ziemlich unbrauchbar (da in einigen Fällen zuerst 80, dann 90 für h zugewiesen wird).

      War mein fehler beim Copy&Pasten.

      switch(x) {
      case bla1:
        h = 1;
        break;
      case bla2:
        h = 2;
        break;
      case bla3:
        h = 3;
        break;
      case bla4:
        h = 4;
        break;
      ...
      default:
      h = 99;
      break;
      }
      Suchst du so etwas in der Art?

      Bei insgesamt ca. 600 Möglichkeiten (meine Abfrage oben ist testweise reduziert) ist das auch sehr aufwendig, oder?

      Danke, gertru.de

      1. Hi!

        Bei insgesamt ca. 600 Möglichkeiten (meine Abfrage oben ist testweise reduziert) ist das auch sehr aufwendig, oder?

        Ja, aber Du kannst einfach mehrere Moeglichkeiten zusammenfassen:

        switch (x) {
          "bla": h = 80; break;
          "bla0":
          "bla1":
          "bla2":
            h = 100; break;
          "bla3":
          "bla4":
            h = 120; break;
          ...
          default:
            h = 200;
        }

        Das break ist der Schluessel dazu. Weiteres in Selfhtml.
        Ist fuer 600 Unterscheidungen natuerlich immer noch aufwendig. Du solltest also besser eine gewisse logische Struktur oder eine Berechnungsvorschrift in den Bedingungen finden und diese ausnutzen. Oder Du packst die Zahlen am Ende jeden 'bla's in ein Array (nur die, bei denen die sich dann die Zuweisung an h aendert), und gehst dieses durch, um die Stelle zu finden, wo das gesucht (dazwischen) liegt. Diese Position nimmst Du dann und schaust in einem zweiten Array, in dem Du alle h's gespeichert hast, an genau derselben Position nach.

        So long

        1. Hallo Roland,

          Das break ist der Schluessel dazu. Weiteres in Selfhtml.
          Ist fuer 600 Unterscheidungen natuerlich immer noch aufwendig.

          Vielleicht waere eine Hinterfragung der konzeptionellen Struktur auch angesagt. 600 Optionen fuer Layertausch ist wohl etwas viel.

          Gruesse
          Wilhelm

          1. Moin Wilhelm!

            Vielleicht waere eine Hinterfragung der konzeptionellen Struktur auch angesagt. 600 Optionen fuer Layertausch ist wohl etwas viel.

            Jetzt wo Du's sagst, faellt mir's auch irgendwie auf... ;-)

            So long