Autor Zpráva
kabanos
Profil *
Ahoj,
na netu jsem našel míchátko barev - http://latrine.dgx.cz/color-mixer-aneb-michatko
s příkladem použití - http://knowhow.davidgrudl.com/javascript/color-mixer/stripe/popup.html

Chci umístit toto míchátko na své stránky (bude jich tam celkem asi 5), ale potřeboval bych při jeho použití, aby se po výběru barvy nejen změnila barva pozadí příslušného input políčka ale také, aby se následně spustila ještě jedna nová funkce se třemi parametry, např: function proved(barva,x,y) {nějaký kód}

Nalezl jsem pravděpodobně i místo, kam ji umístit, ale nevím, jak do ní dostat parametr x a y.
Místo je asi ve funkci:
function myConfirmHandler(mixer){
var color = mixer.color.toRGB();
mixer.attachedInput.style.backgroundColor = '#' + color.toHEX();
mixer.attachedInput.style.color = color.brightness() > 128 ? 'black' : 'white';
proved(color.toHEX(),x,y); //spuštění mé funkce
}

Funguje to celé zjednodušeně asi tak, že se míchátko zobrazí spuštěním funkce na onclicku mixer.popup(), potřeboval bych ale asi, aby se to spustilo s mixer.popup(x,y) a tyto parametry se dostali až k funkci myConfirmHandler(), která by spustila tu mojí funkci (viz. výše).

Kam co přidat, aby to fungovalo?
Snad je to srozumitelné.

Moc moc díky
Aichi
Profil
ve funkci popup tedy pridej dva argumenty x,y a uloz si je jako promenne instance, tedy:

this.x = x;
this.y = y;


pak tam kde pises volej:

proved(color.toHEX(),this.x,this.y);
kabanos
Profil *
Dík, ale nějak se to tam nepropasírovalo:-( Nevim ale, zda jsem vše ze tvého návodu pochopil správně.

Udělal jsem toto:
volání popup funkce jsem upravil na: onclick="mixer.popup('100','200');"

do funkce:
DGXColorMixer.prototype.popup = function (x,y) {
this.x = x;
this.y = y;
if (!this.isPopup || !this.attachedInput) return false;
this.setColor(this.attachedInput.value);
offset = getOffset(this.attachedInput);
offset.x += this.attachedInput.offsetWidth;
this.elements.main.style.left = offset.x + 'px';
this.elements.main.style.top = offset.y + 'px';
this.elements.main.style.position = 'absolute';
this.show();
return true;
}

a do funkce:
function myConfirmHandler(mixer){
var color = mixer.color.toRGB();
mixer.attachedInput.style.backgroundColor = '#' + color.toHEX();
mixer.attachedInput.style.color = color.brightness() > 128 ? 'black' : 'white';
proved(color.toHEX(),this.x,this.y);
}

Hlásí to ale pro this.x a this.y undefined[/b]
Prosím, kde dělám chybu?


Mám ještě jeden poddotazík. Předpokládám, že mou funkci bych(až to správně zapíšu) pak mohl volat i ve funkci: function myChangeColorHandler(mixer){
document.title = '#' + mixer.color.toRGB().toHEX();
proved(mixer.color.toRGB().toHEX(),this.x,this.y);
}

Dík
kabanos
Profil *
Tak se moc omlouvám za zmatky, ale funguje to vše:-)) Díky

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: