2016-07-12 3 views
-3

私は4色の配列を持っています。配列の要素を一度だけ取得する

EX:

var c1 = getColor(); 
var c2 = getColor(); 
var c3 = getColor(); 
var c4 = getColor(); 

function geraColor() 
{ 
    var colors = ['#3498db', '#8e44ad', '#e67e22', '#1abc9c']; 
    //Return each value only once 
} 

私は教師のリストを持って、各教師は彼の専門分野を持つサブリストを持っています。このよう
Professor and Disciplines

私は教授をクリックするたびに、毎回私は教授の名前をクリックして、私は私のカレンダー内のこれらの学問分野を追加(Alreay完了)。

私は助けが必要です:私はクリック/拡大する各教授に固有の色(ランダムまたは非)を生成する必要があります。

私は教授が4人しかいないので、私は4色だけを生成する必要があります。
Obs2:毎回教授をクリックして、その分野を閉じます。私は彼が再び使用可能だった色を作る必要があります。多分、私はあなたの質問を理解

+0

**私は常に要素を1回だけ取得したいと思います。 – brk

+0

私は他の教授に同じ色を得ることができません。しかし、いったん私は彼の分野を閉じると、その色は再び利用可能でなければならない。 (私はdownvoteを説明するコメントをお願いしたい)。 – PlayHardGoPro

+1

グローバルスコープで 'colors'配列を設定し、' pickedColor = colors.pop() '/' colors.push(releasedColor) 'を使うのはどうでしょうか? – Arnauld

答えて

0

だけdictionnary remembrering教授の色を管理しますこれは達成したいことです:

var colors = ["red", "green", "yellow", "orange", "blue", "pink"]; 
 
var defaultColor = "black"; 
 

 
function getRndColor() { 
 
    var size = colors.length; 
 
    var rnd = Math.floor(Math.random() * size); 
 
    return colors.splice(rnd, 1)[0]; 
 
} 
 

 
function getColor(elem) { 
 
    var color = defaultColor; 
 
    if (elem.checked) { 
 
    color = getRndColor(); 
 
    } else { 
 
    colors.push(elem.parentElement.style.color); 
 
    } 
 
    elem.parentElement.style.color = color; 
 
    console.log(colors); 
 
}
<span><input type="checkbox" onclick="getColor(this)"/>Get Random Color</span> 
 

 
<span><input type="checkbox" onclick="getColor(this)"/>Get Random Color</span> 
 
<br/> 
 
<span><input type="checkbox" onclick="getColor(this)"/>Get Random Color</span> 
 

 
<span><input type="checkbox" onclick="getColor(this)"/>Get Random Color</span> 
 
<br/>

+0

Googleカレンダーと似ていますが、カレンダー(イベント)に挿入する分野は、各教授ごとに同じ色でなければなりません。一度に4人の教授の最大数と、同時に4色ので。 – PlayHardGoPro

+0

私のコードは役に立ちますか? –

1

AFA ...私はあなたが達成したいのか理解していないことを確認、しかし

var profColors = {}; 
 

 
function getColor(profName){ //profId would be better 
 
    if (!profColors[profName]) 
 
    profColors[profName] = getRandomColor(); // or nor random... 
 
    
 
    return profColors[profName]; 
 
}

関連する問題