Dzięki, to rzeczywiście bardzo ważna i potrzebna rzecz (tylko zamiast var try trzeba użyć var cokolwiek_innego :-))
Niestety mam kolejny problem i po całej nocy szukania rozwiązania i tylko dwóch godzinach spania nie mam już pomysłu pod jakim hasłem szukać. Pełen kod mojego programu na ten moment wygląda tak:
<!DOCTYPE html>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta content="gra, koncentracja" name="keywords"> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
/*arrays*/
index=[0,1,2,3,4,6,7,8];
colorus=["#000000","#800000","#0000FF","#008000","#FFFF00","#FF00FF","#808080","#FF0000","#FFE4E1"];
desc=["czarny","brązowy","niebieski","zielony","żółty","fioletowy","szary","czerwony","różowy"];
p{
font-size:50px;
font-weight:bold;
text-transform:uppercase;}
.colourbox{
width:150px;
height:150px;
border:1px solid black;
text-align:center;
float:left;
margin:7px;}
var all = function(globaldate1){
/*function random array elements*/
function random(){
function randarray(array){
for(var i = 0; i < array.length; i++){
var j = Math.floor(Math.random() * array.length);
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
/*random, showed colour & description*/
var randindex=randarray(index);
var randomdesc=randarray(desc);
var randomcolour=randarray(colorus);
var randescolour=randomcolour[randindex[0]];
document.getElementById("cont").innerHTML='<p style="color:'+randescolour+'">'+randomdesc[0]+'
</p>';
var x=1;
var boxes=[];
while(x<=7){
boxes[x++]=['<div class="colourbox" style="background:'+randomcolour[x] +'"></div>'];}document.getElementById("boxes").innerHTML=boxes;
/* Tu jest problem, funkcja play nie otrzymuje koloru wybranego diva, ale jeden kolor dla wszystkich div, niezaleznie od tego na który się kliknie*/
$("#boxes").on("click", ".colorbox", function () {
play($(this).data("boxColor"), randescolour);
});
}
random();
/*end of function randarray*/
/*function play and points*/
function play(choosecolor, randescolor){
if(choosecolor==randescolor){
if(document.getElementById('points').innerHTML===''){
document.getElementById('points').innerHTML=100;}
else{
function points(allpoints){
var addpoints=parseInt(allpoints)+100;
document.getElementById('points').innerHTML=addpoints;
}
}
points(document.getElementById('points').innerHTML);
}
else{
if(document.getElementById('mistakes').innerHTML===''){
document.getElementById('mistakes').innerHTML=1;}
else{
function mistakes(allmistakes){
var addmistakes=parseInt(allmistakes)+1;
document.getElementById('mistakes').innerHTML=addmistakes;
}
}
mistakes(document.getElementById('mistakes').innerHTML);
}
random();
}
}(document.getElementById("points").innerHTML)
setInterval("random();",time);
To jeszcze nie jest skończone, brakuje kilku ważnych opcji. Ale najpierw muszę rozwiązać problem z funkcją play(). Chodzi o to, że jako argumenty powinna otrzymywać kolor tła klikniętego diva (randomcolour[x], z czym właśnie jest problem) oraz kolor napisu (randescolour). Niestety argument funkcji nie jest połączony oddzielnie z każdym divem i dla każdego z nich przesyła taką samą wartość, co akurat nie jest dziwne i rozumiem dlaczego tak jest. Dlatego zamiast mieś inną wartość dla diva czerwonego, inną dla niebieskiego, zielonego itd., zawsze jest ona taka sama.
Rozwiązanie pewnie jest banalne, ale naprawdę nie wiem jak to zrobić ...