Ja, das trifft zu, ich bin nur der Meinung, dass es dann einfacher und übersichtlicher wäre, die Funktion gleich im globalen Namespace zu definieren.
Okay. Im globalen Namespace definieren heißt an der Stelle die verschachtelnde Funktion entfernen? Mit window.XY habe ich es nicht hinbekommen, ich habe jetzt einfach die umhüllende Funktion entfernt.
Das hat mich zu einem anderen Problem gebracht: Die Funktion wurde im Head ausgeführt, was dazu geführt hat, dass die Seite noch nicht geladen war.
Mit ein bisschen experimentieren funktioniert es jetzt soweit. Ich habe die document.ready Funktion einfach vor meine Ausführung der Veränderung gepackt. In der finalen Version wird das dann wohl vor der Schleife stehen, welche die Daten der JSON Abfrage in meine Tabelle übersetzt.
<script>
//************rgb-Werte aus hex holen
function hexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
function hexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
function hexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
function cutHex(h) {return (h.charAt(0)=="#") ? h.substring(1,7):h}
//***********relative Helligkeit von r,g,b bestimmen
function Brightness(r, g, b)
{
return Math.sqrt(
r * r * .241 +
g * g * .691 +
b * b * .068);
}
//****************Textfarbe je nach Schwellwert zurückgeben
function textfarbe(helligkeit){
if (helligkeit >= 130){return 'black'}
if (helligkeit < 130){return 'white'}
}
function farbwechsler(farbe, ziel){
var aktfarbe = farbe;
var ziel = ziel;
var R = hexToR(aktfarbe);
var G = hexToG(aktfarbe);
var B = hexToB(aktfarbe);
document.getElementById(ziel).style.backgroundColor = aktfarbe;
document.getElementById(ziel).style.color = textfarbe(Brightness(R,G,B));
}
</script>
<script>
$(document).ready(function(){
farbwechsler("#00ff55", "schrift");
farbwechsler("#323115", "schrift2");
})
</script>
Alles anzeigen
Das hat auf jeden Fall schon mal MEGA weiter geholfen. Ich habe zum Thema in dem von dir verlinkten Artikel auf Stackoverflow noch einen guten Link gefunden. Der hat mich auch nochmal weiter gebracht im verstehen. Artikel zu Closures
Damit komme ich jetzt auf jeden Fall weiter, denke ich. Das Auslagern in eine eigene Datei hat nun auf jeden Fall auch geklappt
PS:
Das traf vor 10, 20 Jahren zu, aber heute nur noch sehr eingeschränkt, da es sehr vieles, was früher den Nutzen von jQuery ausgemacht hatte, inzwischen auch in Vanilla-Javascript gibt, z. B. classList oder die Funktion closest. Wenn Du noch am Beginn bist, empfehle ich, nicht in jQuery einzusteigen.
Das ist ein guter Hinweis. In der Software welche ich versuche mittels eines Formulars zu erweitern wird JQuery eingesetzt. Da hier aber 90% der Dateien closed Source sind werde ich wohl gar nicht erst mit dem einarbeiten beginnen... Ich mag es eher Vanilla, da hier meiner Erfahrung nach die geringsten "Nebenwirkungen" und Probleme auftreten. Wenn es keinen echten Grund mehr gibt sich einzuarbeiten ist das auf jeden Fall gut zu wissen.
Herzlichen Dank für eure Unterstützung!