서로

2012-02-16 4 views
0

내가서로

var hue = ['#2dafe9','#5feec3','#fdaf17','#999999','#2b2b2b','#454323','#ab34ef', '#e324e2','#874edf','#18edf4']; 
    function getHue(){ 
     return hue[Math.floor(Math.random() * hue.length)]; 
    } 

    function rainbow(){ 
     $("header[role='postHeader']").each(function(){ 
       $(this).css('background-color',getHue()); 
     }); 
    } 
    rainbow(); 

내 질문은이 코드를 사용하여 임의의 배경 색상을 추가 해요 옆에 동일하지 않을 것입니다 색상을 선택하는 방법, 어떻게하지 않고 배열의 순서에서 색상을 선택합니다 결과에서 서로 옆에 같은 색상으로 표시되므로 색상이 배열 순서를 따르고 마지막 배열로 이동하면 첫 번째 배열로 되돌아갑니다.

+0

임의성 또는 순서가 필요합니다. 어느 것? –

+0

배열과 같은 순서로 배열 – Warface

+0

또한 "색상"은이 문제와 아무 관련이 없으며 완전히 추상화 될 수 있습니다. 문제는 순차적 배열 액세스의 결과에 대해 특정 의미를 묻는 것 (아직 OP에서 명확히하기위한 것)에 관한 것입니다. Javascript조차도 엄격하게 관련이 없습니다. jQuery는 그렇지 않습니다. –

답변

2
function getHue() { 
    var t = hue.shift(); 
    hue.push(t); 
    return t; 
} 

첫 번째 색조를 취하여 배열 끝에 다시 가져 와서 반환합니다.

+0

넵 좋다. 감사! – Warface

+0

이 방법은 Andrew가 언급 한 것보다 훨씬 효율적이지 않습니다. 배열에서 실제로 읽는 동안 Array를 두 번 변경하는 것입니다. – copy

+0

참이지만 '무지개'는 일회용 기능인 것처럼 보입니다. 따라서 40 억 개의

가 페이지에 있지 않으면 성능 차이는 무시할 수 있습니다. –

0

로컬 변수를 유지하고 배열을 탐색합니다.

(function(){ 
    var idx = 0; 
    function getHue(){ 
    return hue[idx = idx++ % hue.length]; 
    } 
})(); 
+0

실제로 모듈로를 변수에 적용하는 것을 잊지 마십시오. 아니면 결국 오버 플로우됩니다. –

관련 문제