0

ランダムなカラーセットを定義するこの関数があります。

私の問題は、変数 ( ) を定義して、オブジェクトvar targetから新しいカラー セットを選択することです。kuler

kuler: {
    set0:['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9'],
    set1:['#0F2440','#2C3F59','#518C8C','#94BEAC','#D9CAAD'],
    set2:['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9'],
    set3:['#0F2440','#2C3F59','#518C8C','#94BEAC','#D9CAAD'],
    set4:['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9'],
    set5:['#0F2440','#2C3F59','#518C8C','#94BEAC','#D9CAAD'],
    set6:['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9']
},
setNewColourSet: function () {
    rn=Math.floor(Math.random()*5);
    for (i=0; i<4; i++){
        var target = "project.kuler.set"+rn+"["+i+"]";
        $('.kuler'+i).css('background-color',target);
        /* works *///  $('.kuler'+i).css('background-color',project.kuler.set4[i]);
    }
}
4

4 に答える 4

4

あなたが近くにいたと思ってください-ちょうど四角い中かっこ内に文字列を入れてください。

var target = project.kuler['set' + rn][i];

rnがに追加された数値'set'であり、kulerそれ自体が。と呼ばれるオブジェクトリテラル内にあると仮定しますproject

kuler['set'+rn]最初の中括弧( )はオブジェクトリテラルのプロパティアクセスでkulerあり、2番目の中括弧([i])は配列の配列インデックスアクセスであることに注意してください。

于 2012-08-21T13:22:44.773 に答える
2
kuler: {
    set0:['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9'],
    set1:['#0F2440','#2C3F59','#518C8C','#94BEAC','#D9CAAD'],
    set2:['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9'],
    set3:['#0F2440','#2C3F59','#518C8C','#94BEAC','#D9CAAD'],
    set4:['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9'],
    set5:['#0F2440','#2C3F59','#518C8C','#94BEAC','#D9CAAD'],
    set6:['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9']
},
setNewColourSet: function () {
    var rn = Math.floor(Math.random()*5);

    for (i=0; i<4; i++){
    $('.kuler'+i).css('background-color', this.kuler['set'+i][rn]);
    }
}

どうぞ

于 2012-08-21T13:28:38.730 に答える
1

このように名前に番号が付けられたオブジェクトを作成する場合は、リストを作成してみませんか?

kuler: [
  ['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9'],
  ['#0F2440','#2C3F59','#518C8C','#94BEAC','#D9CAAD'],
  ['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9'],
  ['#0F2440','#2C3F59','#518C8C','#94BEAC','#D9CAAD'],
  ['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9'],
  ['#0F2440','#2C3F59','#518C8C','#94BEAC','#D9CAAD'],
  ['#499E8D','#85CC9F','#A4DEAB','#C8E8C7','#FFF6C9']
],

setNewColourSet: function () {
  rn=Math.floor(Math.random()*5);
  for (i=0; i<4; i++){        
    $('.kuler'+i).css('background-color',kuler[rn][i]);
  }
}
于 2012-08-21T13:26:50.280 に答える
0

var target = "project.kuler.set"+rn+"["+i+"]";

ターゲットに文字列を割り当てています。

project はオブジェクトで、kuler はその一部だと思うので、引用符を削除してみてください。

于 2012-08-21T13:27:46.393 に答える