Ý tưởng: Tôi đang cố gắng mô phỏng hệ thống cửa hàng. Bằng cách nhấp vào các mục người dùng cho thấy rằng anh ấy quan tâm đến nội dung như vậy và trở nên giống như nó trong lần tiếp theo anh ấy truy cập trang web. Tôi muốn đạt được một cái gì đó tương tự mà không có những thứ để mua, nhưng với màu sắc. Bạn nhận được màu sắc ngẫu nhiên. Nếu bạn thích màu đỏ, bạn có màu ngẫu nhiên nhưng màu đỏ hơn bình thường.Màu ngẫu nhiên với tùy chọn
Cho đến nay về lý thuyết. Thực tế tôi đã tạo cookie cho r, g và b với giá trị bắt đầu 1.0. Mỗi khi một trong các màu được nhấp vào giá trị tăng +0.1 và các giá trị khác giảm xuống -0.1. Nhưng làm cách nào để tính số liệu?
Đây là Javascript của tôi cho đến nay:
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 "";
}
Bên cạnh câu hỏi của bạn ... 'Math.round ((Math.random() * (255 - 255) + 255));' Bạn có chắc là nó hoạt động không? Đối với tôi, có vẻ như bạn nhân giá trị ngẫu nhiên với số không, do đó, nó sẽ luôn dẫn đến giá trị '0 + 255' = 255. – Hexaholic
Cập nhật vấn đề của tôi. Nó phải là Math.round ((Math.random() * (255 - 1) + 1)); – Trojan
Bạn đang cho chúng tôi biết bạn sẽ trừ (-) 0,1 trên hai giá trị khi 1 giá trị tăng với (+) 0.1 ... Điều này cuối cùng sẽ tạo ra các giá trị âm. Vì vậy, hãy chắc chắn kiểm tra giá trị cao nhất và hỗ trợ các giá trị âm hoặc sửa chữa nó. Tôi chỉ không thể không chú ý :) –