我想为学校做一个lottoticket,但是当我必须绘制数字时它不起作用(第59行)

时间:2017-11-20 19:04:41

标签: javascript html

第59行的所有内容似乎都有效。我是非常新的编码,并没有真正得到这样的...我无法找到错误,我怀疑,我错过了一个{}或()但我不知道。我认为唯一的错误在于TegnKupon",因为那部分谷歌浏览器告诉我改变。

我试着和一些伙伴讨论这件事,但他们也无能为力。他们用另一种方式制造了它,显然。

<!DOCTYPE html>    
<html>    
<head>    
<canvas id="myCanvas" width="600" height="300" style="border:1px solid    #ff0000;"> 



</canvas>   

</head>    
<script type="text/javascript">   
function find_randomtal(limit)    
{    
    var random_tal    
        var cont = true    
        while (cont)    
        {
            random_tal=Math.round(Math.random()*100+1);
            if (random_tal <=limit)
            {
                cont = false
            }
        }
        return random_tal;
    }
var lottotal = [];
    function Findlottotal () 
    {
        var min=1; 
        var random_talny;
        var lottotal = [];
        for (var j=min; j<=7; j++) 
        {
            random_talny = find_randomtal(36);
            if (lottotal.indexOf(random_talny)<0) 
            {
                console.log(j + "random_talny: " + random_talny + " Findes ikke ");
                lottotal[j] = random_talny
            }
            else 
            {
                console.log (j + "random_talny: " + random_talny + " Findes ");
                j--
            }
        }
}
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext("2d");

function TegnKupon()
{
    var taeller = 0
    for (var j=1;j<=4;j++)
    {
        for (var i=1;i<=9;i++)
        {
            taeller = taeller+1
            xpos=i*100-50
            ypos=100*j-50

            if (lottotal.indexOf(taeller)<0) 
            {
                ctx.beginPath();
                ctx.fillStyle = "rgb(255,255,255)"
                ctx.arc(xpos,ypos,50,0,2*Math.PI);
                ctx.fillText("tallet",x,y+10)
            }
            else
            {
                ctx.beginPath();
                ctx.fillStyle = "rgb(255,0,0)"
                ctx.arc(xpos,ypos,50,0,2*Math.PI);
                ctx.fillText("tallet",x,y+10)
            }


        }

    }

}
lottotal = Findlottotal()


</script>
<body onload="Findlottotal();TegnKupon()">

</body>
</html> 

4 个答案:

答案 0 :(得分:1)

这里发生了一些事情......

首先,xyTegnKupon未定义。也许您想使用xPosyPos

接下来,我注意到lottotal被赋予Findlottotal的值,但实际上,此函数不会返回任何内容。我在Findlottotal底部添加了一行以返回lottotal

这是我的调整后的代码段。它不再给出控制台错误。

<!DOCTYPE html>    
<html>    
<head>    
<canvas id="myCanvas" width="600" height="300" style="border:1px solid    #ff0000;"> 



</canvas>   

</head>    
<script type="text/javascript">   
  function find_randomtal(limit) {    
    var random_tal;
    var cont = true;

    while (cont) {
      random_tal = Math.round(Math.random() * 100 + 1);
      if (random_tal <= limit) {
        cont = false;
      }
    }
    return random_tal;
  }

  var lottotal = [];

  function Findlottotal () {
    var min = 1; 
    var random_talny;

    var lottotal = [];

    for (var j = min; j <= 7; j++) {
      random_talny = find_randomtal(36);
      if (lottotal.indexOf(random_talny) < 0) {
        console.log(j + "random_talny: " + random_talny + " Findes ikke ");
        lottotal[j] = random_talny;
      }
      else {
        console.log (j + "random_talny: " + random_talny + " Findes ");
        j--;
      }
    }

    return lottotal;
  }

  var canvas = document.getElementById('myCanvas');
  var ctx = canvas.getContext("2d");

  function TegnKupon()
  {
    var taeller = 0
    for (var j = 1; j <= 4; j++)
    {
      for (var i = 1; i <= 9; i++)
      {
        taeller = taeller + 1;
        xpos = i * 100 - 50
        ypos = 100 * j - 50;

        if (lottotal.indexOf(taeller) < 0) {
            ctx.beginPath();
            ctx.fillStyle = "rgb(255,255,255)";
            ctx.arc(xpos, ypos, 50, 0, 2 * Math.PI);
            ctx.fillText("tallet", xpos, ypos + 10);
        }
        else {
            ctx.beginPath();
            ctx.fillStyle = "rgb(255,0,0)"
            ctx.arc(xpos,ypos,50,0,2*Math.PI);
            ctx.fillText("tallet",xpos,ypos+10);
        }
      }
    }
  }

  lottotal = Findlottotal()


</script>
<body onload="Findlottotal();TegnKupon()">

</body>
</html> 

答案 1 :(得分:1)

正如以上答案所示,有一些我发现的错误:)这是关于你在寻找什么?

function find_randomtal(limit)    
{    
    var random_tal    
        var cont = true    
        while (cont)    
        {
            random_tal=Math.round(Math.random()*100+1);
            if (random_tal <=limit)
            {
                cont = false
            }
        }
        return random_tal;
}

function Findlottotal () 
    {
        var min=0; 
        var random_talny;
        var lottotal = [];
        for (var j=min; j<=7; j++) 
        {
            random_talny = find_randomtal(36);
            if (lottotal.indexOf(random_talny)<0) 
            {
                console.log(j + "random_talny: " + random_talny + " Findes ikke ");
                lottotal[j] = random_talny
            }
            else 
            {
                console.log (j + "random_talny: " + random_talny + " Findes ");
                j--
            }
            console.log(lottotal);
        }
        return lottotal;
}
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext("2d");

function TegnKupon(lottotal)
{
    var taeller = 0
    for (var j=1;j<=4;j++)
    {
        for (var i=1;i<=9;i++)
        {
            taeller = taeller+1
            xpos=i*100-50
            ypos=100*j-50
            console.log("taller " + lottotal);
            if (lottotal.indexOf(taeller)<0) 
            {
                ctx.beginPath();
                ctx.fillStyle = "rgb(255,255,255)"
                ctx.arc(xpos,ypos,50,0,2*Math.PI);
                ctx.fillText("tallet",xpos,ypos+10)
            }
            else
            {
                ctx.beginPath();
                ctx.fillStyle = "rgb(255,0,0)"
                ctx.arc(xpos,ypos,50,0,2*Math.PI);
                ctx.fillText("tallet",xpos,ypos+10)
            }


        }

    }

}


document.getElementsByTagName("body")[0].onload = function() {
  var lottotal = Findlottotal();
  TegnKupon(lottotal);
};
<!DOCTYPE html>    
<html>    
<head>       
</head>    
<canvas id="myCanvas" width="600" height="300" style="border:1px solid    #ff0000;"> 
</canvas>
<body>
</body>
</html> 

答案 2 :(得分:0)

你不应该以这种方式调用你的函数。相反,将它们包装到一个名为init的函数中并将其称为onload

function init(){
    Findlottotal();
    TegnKupon();
}

window.onload = init();

您也在引用xy而未定义它们。我想也许你想说xposypos

答案 3 :(得分:0)

我不确定你在寻找什么输出,但我发现了2个问题: 1.函数TengKupon中没有定义lottotal 2.同样在TengKupon中,在if / else中,ctx.filltext仅列出“x”和“y”。你的意思是在这里使用“xpos”和“ypos”吗?当我相应地替换它们时,我得到一个带有'tallet'的网格(从“if”)或多次(从“else”)

所以数字2应该很容易,但对于数字1,我​​认为问题可能是你没有返回“lottotal”以使其可供TengKupon使用。您的错误是“无法读取undefined的索引,这是指lottotal。

我假设您的意思是从FindLottotal返回lottotal,所以我在FindLottotal for循环中添加了“return lottotal”,直接在if else之下添加:

var lottotal = [];
    for (var j=min; j<=7; j++) 
    {
        random_talny = find_randomtal(36);
        if (lottotal.indexOf(random_talny)<0) 
        {
            console.log(j + "random_talny: " + random_talny + " Findes ikke ");
            lottotal[j] = random_talny
        }
        else 
        {
            console.log (j + "random_talny: " + random_talny + " Findes ");
            j--
        }
        return lottotal;
    }

如果不了解您正在寻找的内容,我无法提供更多信息,但希望这会让您进入下一步。

祝你好运!