2014-01-10 126 views
1

我想要改變一個按鈕單擊隨機顏色的身體背景顏色。隨機背景顏色變化

<script> 
$(document).ready(function() { 
    $('.SpecButton').click(function() { 
     $('body').css('background-color',"<?php 
      $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'); 
      $color = '#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)]; 
      echo $color; 
       ?>"); 
      }); 
     });  
</script> 

問題是第一次點擊更改背景顏色,但第二次嘗試沒有。

+2

stackoverflow.com/questions/3905145/apply-different-background-color-using-jquery或http://css-tricks.com/snippets/php/random-hex-color/ – Cam

+1

PHP在服務器上運行。把PHP放入你的javascript是無用的,因爲它永遠不會到達客戶端。 – Leng

+0

謝謝大家,我現在明白問題 –

回答

2

你應該在javascript中做隨機數生成。由於PHP代碼是服務器端,它只會設置一次隨機數,而使用JavaScript,每次單擊按鈕時都可以獲得新的隨機數。

$(document).ready(function() { 
    $('.SpecButton').click(function() { 
     var color = '#'+Math.floor(Math.random()*16777215).toString(16); 
     $('body').css('background-color', color); 
    }); 
});  

小提琴這裏:http://jsfiddle.net/TQ3hV/

或者如果你是確定與RGB顏色,這種方法可能是最簡單,最乾淨的理解:

var color = 'rgb(' + Math.floor(Math.random() * 255) + ',' 
        + Math.floor(Math.random() * 255) + ',' 
        + Math.floor(Math.random() * 255) + ')'; 

小提琴這裏:http://jsfiddle.net/TQ3hV/1/

來源隨機彩色發生器:http://www.paulirish.com/2009/random-hex-color-code-snippets/

+0

謝謝,這是一個解決方案 –

1

我遇到了與我嘗試使用代碼時遇到的問題相同的問題。我不喜歡那裏的PHP,所以我找到了一些Javascript。假設你提前加載腳本的jQuery的,我會跳過內嵌PHP和像這樣的東西去:

$(document).ready(function() { 
    $('.SpecButton').click(function() { 
     var x = Math.round(0xffffff * Math.random()).toString(16); 
     var y = (6-x.length); 
     var z = '000000'; 
     var z1 = z.substring(0,y); 
     var color = '#' + z1 + x; 
     console.log(color); // just in case you like the color, here's the number 
     $('body').css('background-color', color); 
    }); 
}); 

我發現它在評論部分此頁上:

http://css-tricks.com/snippets/javascript/random-hex-color/

+0

謝謝大方案 –