2012-03-06 44 views
1

我正在为我的网站写一个骰子滚轮,并感谢我的其他问题,我可以在我的函数中输入数据,但我要求的数据返回的身份不明。Javascript Dice roll返回身份不明

  //Constant 
     var consDie = new Array(3); //Implanté les élément de constance des dés. 
      for (var i = 0; i <= 2; i++){ 
       consDie[i] = 12 - (i * 2); 
       console.log("D" + consDie[i]); 
      } 

      var consNDice = 6; //Constante pour le nombre de dés 
      var consAlign = { 
       UnAl : consDie[2], 
       Bal : consDie[1], 
       Phys : consDie[0], 
       Ment : consDie[0] 
      }; 
      //declaration of an object that contain the kind of dice that is rolled by powerup 

     //Variable integers 
     var intDice = new Array(6); // contenant pour les résultats de dé. 
     var intPhys = 0; //Phys Aligned answer counter 
     var intBal = 0; //Neutral/balanced aligned answer counter 
     var intMent = 0; //Mental aligned answer counter 


     //Dice Roll function 

     function Dice (consAlign) { 
      //Variables constant 
      this.dicekind = consAlign; 
      this.rollDice = function() { 
       return Math.floor(Math.random()*dicekind); 
      }; 

     } 

     console.log(Dice(consAlign["Ment"])); 

我做错了什么?

+0

现在我得到了NaN,如果我不在()中发送一个数字,但我想让函数获得我的consAlign []值? – Delarn 2012-03-06 18:53:32

+0

我已经扩展我的答案来解释你为什么得到NaN。 – Douglas 2012-03-06 19:14:28

+0

它现在有效!我要攻击我的代码中的“疑问”部分......我想我必须为此部分制作JSon。 – Delarn 2012-03-06 19:55:08

回答

2

Dice函数不会返回一个值。它看起来像你的意思是用它来建立一个新的对象:

console.log(new Dice(consAlign["Ment"])); 

编辑:当您的编辑,你得到NaN因为dicekind是不确定的跟进。 5 * undefined给出NaN,“不是数字”。

您需要在Dice内使用this.dicekind才能使其正常工作。这里是做工作的一种方法:

function Dice(kind) 
    { 
     this._kind = kind; 
    } 

    Dice.prototype.roll = function() 
    { 
     return Math.floor(Math.random() * this._kind) + 1; 
    }; 

    var dice = new Dice(6); 

    console.log(dice.roll()); 

我也是在辊法加1,使值的范围为1..6,而不是0..5。

+0

非常感谢这个答案! – Delarn 2012-03-06 18:36:06

+0

好的,我做到了,它给了我骰子应该是什么。 'var nDice; \t \t \t nDice = new Dice(consAlign); \t \t \t console.log(nDice);' 它给了我一个骰子的对象......现在我该如何掷骰子? – Delarn 2012-03-06 19:08:09

+0

你可以调用roll方法:'nDice.rollDice()'。我在我的示例中将其重命名为“roll”,因为您已经知道它是一个“Dice”对象,所以您不需要在方法名称中重复该操作。 – Douglas 2012-03-06 19:17:36