Jan Guth: Help- if bedinung

wenn ich bei diesem teil meines scriptes die if-bedinungen lösch (also false oder true) einsetze funktioniert es (=> also gibt mir was aus). Aber wenn die if-bedinungen drin sind gibt es mir keine Ausgabe mehr hab ich hier irgendwo ein sytax fehler?

if(rot < 0)
        var tmprot = Math.max(0, (rot-minus)).toString(16);
    if(rot > 255)
        var tmprot = Math.min(255, (rot-minus)).toString(16);
    if(rot <= 255 && rot >= 0)
        var tmprot = (rot-minus).toString(16);
    var count = tmprot.toString();
    if(count.length<2)
        var tmprot = "0" + tmprot;

if(gruen < 0)
        var tmpgruen = Math.max(0, (gruen-minus)).toString(16);
    if(gruen > 255)
        var tmpgruen = Math.min(255, (gruen-minus)).toString(16);
    if(gruen <= 255 && gruen >= 0)
        var tmpgruen = (gruen-minus).toString(16);
    var count = tmpgruen.toString();
    if(count.length<2)
        var tmpgruen = "0" + tmpgruen;

if(blau < 0)
        var tmpblau = Math.max(0, (blau-minus)).toString(16);
    if(blau > 255)
        var tmpblau = Math.min(255, (blau-minus)).toString(16);
    if(blau <= 255 && blau >= 0)
        var tmpgruen = (gruen-minus).toString(16);
    var count = tmpblau.toString();
    if(count.length<2)
        var tmpblau = "0" + tmpblau;

return(tmprot + tmpgruen + tmpblau);

jan

  1. Hallo jan

    wenn ich bei diesem teil meines scriptes die if-bedinungen lösch (also false oder true) einsetze funktioniert es (=> also gibt mir was aus). Aber wenn die if-bedinungen drin sind gibt es mir keine Ausgabe mehr hab ich hier irgendwo ein sytax fehler?

    if(rot < 0)
            var tmprot = Math.max(0, (rot-minus)).toString(16);
        ...

    Was genau enthält "rot"?
    Hast du das kontrolliert?
    Bzw. woher bekommen die Variablen ihren Inhalt?

    Auf Wiederlesen
    Detlef

    --
    - Wissen ist gut
    - Können ist besser
    - aber das Beste und Interessanteste ist der Weg dahin!
  2. if(rot < 0)
            var tmprot = Math.max(0, (rot-minus)).toString(16);
        if(rot > 255)
            var tmprot = Math.min(255, (rot-minus)).toString(16);
        if(rot <= 255 && rot >= 0)
            var tmprot = (rot-minus).toString(16);
        var count = tmprot.toString();
        if(count.length<2)
            var tmprot = "0" + tmprot;

    Das sieht ja so aus, als ob du aus dezimalen RGB Werten Heaxadezimale machen willst. Nur was dieses - minus bedeutet ist unklar, zu ziehst noch einen Wert ab, aber was für einen?

    Vor allem sind deine if Bedingungen doppelt gemoppelt.

    if( x > 255) x = Math.min(x, 255);

    Das ist Blödsinn, enweder nur:
    if( x > 255) x = 255;
    oder
    x = Math.min(x, 255);

    Struppi.

  3. Jan,
    Du kannst hier ein wenig optimieren: Nachdem du

    if(rot < 0)

    abgefragt hast, musst du

    if(rot > 255)

    nur noch abfragen, wenn die erte Bedingung nicht erfüllt war.

    if(rot <= 255 && rot >= 0)

    trifft schon zu, wenn beide vorigen Bedingungen nicht erfüllt wurden, muss also gar nicht mehr abgefragt werden.

    Nutze den else-Zweig:

    ~~~javascript if(rot < 0) {}
        else if(rot > 255) {}
        else {}

      
    Live long and prosper,  
    Gunnar
    
    -- 
    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)