Die Idee: Ich versuche ein Shop-System zu simulieren. Durch Klicken auf Elemente zeigt der Benutzer an, dass er sich für solche Sachen interessiert und dass es ihm beim nächsten Besuch der Website ähnlicher wird. Ich möchte etwas ähnliches nur ohne Dinge zu kaufen, aber mit Farben. Sie erhalten zufällige Farben. Wenn Sie rote Farben "mögen", erhalten Sie zufällige, aber mehr Rot als gewöhnlich.Zufällige Farben mit Vorzug
Bis jetzt in der Theorie. Praktisch habe ich Cookies für r, g und b mit den Startwerten 1.0 gemacht. Jedes Mal, wenn eine der Farben angeklickt wird, steigt der Wert um +0,1 und die anderen um -0,1. Aber wie kann man die Zahlen berücksichtigen?
Das ist mein Javascript so weit:
var r = getCookie("r");
var g = getCookie("g");
var b = getCookie("b");
if (r = ""){
setCookie("r",1.0,365);
setCookie("g",1.0,365);
setCookie("b",1.0,365);
}
init();
function init(){
var colorboxes = document.getElementsByClassName("mycolorbox");
[].forEach.call(colorboxes,function(entry){
var sr = Math.round((Math.random() * (255 - 1) + 1));
var sg = Math.round((Math.random() * (255 - 1) + 1));
var sb = Math.round((Math.random() * (255 - 1) + 1));
entry.style.backgroundColor = "rgba("+sr+","+sg+","+sb+",0.8)";
});
}
$(document).click(function(event) {
var clickedObj = $(event.target);
if (clickedObj[0].className.indexOf("likebox") > -1) {
clickedObj[0].style.Color = "red";
var rgb = clickedObj[0].parentNode.style.backgroundColor.match(/\d+/g);
console.log(rgb);
console.log(clickedObj[0].className);
console.log("rot: "+rgb[0]+" gruen: "+rgb[1]+" blau: "+rgb[2]);
if (rgb[0] >= rgb[1] && rgb[0] >= rgb[2]) {
alert("red");
setCookie("r",r-0.1,365)
} else if (rgb[1] >= rgb[0] && rgb[1] >= rgb[2]) {
alert("green");
setCookie("g",g-0.1,365)
} else if (rgb[2] >= rgb[1] && rgb[2] >= rgb[0]) {
alert("blue");
setCookie("b",b-0.1,365)
}
}
});
function setCookie(cname,cvalue,exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname+"="+cvalue+"; "+expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split('; ');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
Neben Ihrer Frage ... 'Math.round ((Math.random() * (255 - 255) + 255));' Sind Sie sicher, dass das funktioniert? Für mich sieht es so aus, als würdest du den Zufallswert mit Null multiplizieren, so dass es immer zu einem Wert von '0 + 255' = 255 kommen würde. – Hexaholic
Ups mein Problem. Es sollte Math.round sein ((Math.random() * (255 - 1) + 1)); – Trojan
Sie sagen uns, dass Sie (-) 0,1 auf zwei Werte subtrahieren, wenn 1 Wert mit (+) 0,1 steigt ... Dies wird schließlich negative Werte erzeugen. Stellen Sie also sicher, dass Sie den höchsten Wert überprüfen und negative Werte unterstützen oder beheben. Ich konnte einfach nicht helfen zu bemerken :) –