Chronos
Aktives Mitglied
Hallo Forum,
ich habe eine Reihe von Slidern (RGBA) die mir eine Farbausgabe ermöglichen.
Da ich bisher je eine Methode für Rot, Grün und Blau habe und die grundsätzlich dasselbe tun, wollte ich diese nun zusammen fassen.
Die ganze Klasse nur mit dem Slider für Rot:
Das ganze wiederholt sich dann noch für Grün und Blau, plus einer Ausgabe jeweils die ich jetzt weggelassen habe.
Da es wie gesagt immer dasselbe ist, wollte ich eine neue Methode 'setColor(property)' mit einem Parameter für property schreiben um das ganze zu kürzen, das Problem ist aber, dass irgendwie die Methode on input nicht mehr aufgerufen wird, nur einmalig im Konstruktor:
geändert in addEventListners:
neue Methode:
Wieso erhalte ich da nun nicht mehr den aktuellen Wert bzw. wird kein Event mehr gefeuert?
Danke schon mal
ich habe eine Reihe von Slidern (RGBA) die mir eine Farbausgabe ermöglichen.
Da ich bisher je eine Methode für Rot, Grün und Blau habe und die grundsätzlich dasselbe tun, wollte ich diese nun zusammen fassen.
Die ganze Klasse nur mit dem Slider für Rot:
Code:
window.onload = function () {
var RgbaHexColorPicker = new ColorPicker();
};
/**
* Class to display rgba- and hex-values
*/
class ColorPicker {
constructor() {
this.colorPanel = document.getElementById('edit-menu__color-panel');
this.sliderRed = document.getElementById('slider-red');
// Input-fields
this.inputRed = document.getElementById('input-red');
// Methods
this.setRed = this.setRed.bind(this);
// Default values
this.red = 0;
this.addEventListeners();
}
/**
* Adds event listeners and calls functions for input-events
*/
addEventListeners() {
this.sliderRed.addEventListener('input', this.setColor);
}
/**
* Set value for red,
* update colorPanel-view and inputRed
*/
setRed() {
let red = this.sliderRed.value;
if (red !== this.red) {
this.red = red;
}
}
}
Das ganze wiederholt sich dann noch für Grün und Blau, plus einer Ausgabe jeweils die ich jetzt weggelassen habe.
Da es wie gesagt immer dasselbe ist, wollte ich eine neue Methode 'setColor(property)' mit einem Parameter für property schreiben um das ganze zu kürzen, das Problem ist aber, dass irgendwie die Methode on input nicht mehr aufgerufen wird, nur einmalig im Konstruktor:
geändert in addEventListners:
Code:
this.sliderRed.addEventListener('input', this.setColor('Red'));
neue Methode:
Code:
setColor(property) {
let sliderName = 'slider' + property;
console.log(sliderName);
// >> sliderRed
var wert = this[sliderName].value;
console.log(wert);
}
Wieso erhalte ich da nun nicht mehr den aktuellen Wert bzw. wird kein Event mehr gefeuert?
Danke schon mal