martachen: Javascript /CSS Zellenhintergrund nach Inhalt verändern

Beitrag lesen

Hallo,

Hallo,

ja, nach dem Schubs leuchtet der Denkfehler ein...wenn ich das soweit richtig verstehe, KANN ich auf diese Weise nichts vergleichen, weil das Script nicht unterscheiden kann, was es aus der Masse der Werte vergleichen soll... (es sind insgesamt 50 Werte, alle unterschiedlich und müssen gegen "mp" verglichen werden.

wie gesagt in mp liegt ne Sammlung von Elementen (zu nem Element gehört ja neben dem Wert zB auch noch Style-Angaben und so vieles mehr)

Das Script an sich würde aber schon grundsätzlich funktionieren?

jein... (wie antwortet auf so eine Frage?) Man kann drauf aufbauen

Werde wohl nochmal auf Null zurück und mit einen anderen Ansatz überlegen...eventuell diesen gewünschten Farbwechsel gleich mit in die Berechnungsfunktion reinbasteln...vielleicht nicht elegant, aber der Lerneffekt ist mir grad auch wichtig.
Oder ich lege erstmal die ganzen Funktionen zusammen, derzeit hab ich die an den jeweiligen Stellen aufgesplittet und drüber gestolpert, das ich auf die Weise ja keine "globalen" Variablen habe, auf die ich beliebig zugreifen kann. Mach mir also mehr arbeit, als vielleicht grad angebracht ist. Werd also erstmal auch diese Kurve glätten.

Ich würde nicht sagen dass du auf null zurück musst oder einen anderen Ansatz überlegen musst. Ein Anfang ist da der nun Schritt für Schritt verbessert werden muss.

<script>  
function HGF() {  
    var fsval = parseInt(document.getElementById('fsval').value);  
        var mwval = parseInt(document.getElementById('mwval').value);  
        var mp = (fsval * 2) + mwval;  
        var ip = document.getElementsByClassName('fd');  

Bis hier hin erstmal ok. Ich kenne die Anwendung nicht, aber aussage kräftige NAmen für Variablen sind sinnvoll. (Wie gesagt, kenne die Anwendung nicht, vielleict ist mp, ip und co aussagekräftig).

Punkt zum Merken: In ip ist nun eine Sammlung aller DOM-Elemente enthalten, die die Klasse fd haben.

Was du jetzt machen willst ist bei jedem der gefundenen Elemente schauen ob der enthaltene Wert kleiner oder größer als dein Vergleichswert mp ist und anhand dieses Vergleichsergebnisses die Hintergrundfarbe ändern.

So ab jetzt wirds spekulativ, da ich nicht weiß welche html-Elemente die Klasse fd haben.

Um durch alle Elemente durch zu iterieren brauchst du nun eine schleife (zB eine For Schleife)

  
var i, currentElementValue;  
  
for(i=0; i< mp.length; i++) {  
   currentElementValue = mp[i].innerHTML // Wert auslesen (zB aus Tabellenzelle)  
                                         // evt anders bei anderem Element  
                                         // evt Bearbeitung wie parseInt, ParseFloat gleich  
                                         // mitmachen  
  
// statt ip nun auf currentElementValue zugreifen  
    if (mp - currentElementValue < 0) {  
        document.getElementsByClassName('fd').style.backgroundColor = 'red';  
    }  
    else if (currentElementValue - mp < 0) {  
        document.getElementsByClassName('fd').style.backgroundColor = 'green';  
    }  
        else {  
                document.getElementsByClassName('fd').style.backgroundColor = 'blue';  
        }  
} // Schleife beenden  
  
        test1.innerHTML = mp;  
        test2.innerHTML = ip;  
}  
  
</script>

Achja mein Code ist völlig ungetestet, könnten also noch Fehler drin sein, aber um die Richtung zu geben wie es geht sollte es reichen

Danke erstmal!

martachen