简体   繁体   English

HTML5 Canvas Grid-从输入中获取网格平方大小

[英]HTML5 Canvas Grid - Get Grid Square Size From Input

How can I get the value of the input and turn it into the size of the grid squares? 如何获得输入的值并将其转换为网格正方形的大小? When I use the input value, my grid is messed up, but when I hard code the grid square size it works fine. 当我使用输入值时,我的网格被弄乱了,但是当我对网格平方大小进行硬编码时,它可以正常工作。

Here is a codepen: https://codepen.io/ryan_pixelers/pen/NbqKMQ 这是一个Codepen: https ://codepen.io/ryan_pixelers/pen/NbqKMQ

and here is the code: 这是代码:

// get our canvas 
var grid = document.getElementById('grid');
hide(grid);

var horizontalSpace = 0;
var verticalSpace = 0;

var button = document.getElementById('gridControls');
button.onclick = drawCanvas;


function drawCanvas() {

show(grid);
var context = grid.getContext('2d');

// HERE: Why doesn't this work???
// var gridSize = document.getElementById('widthHeight').value;
var gridSize = 10;

// set the canvas style to positions absolute
// and set z-index high to keep it on top
grid.style.position = 'absolute';
grid.style.zIndex = '100000';

// get window width and height
var w = window.innerWidth;
var h = window.innerHeight;

// set the canvas width and height to be the window w/h
grid.width = w;
grid.height = h;

// create the horizontal lines
for(var horizontal = 0; horizontal < w; horizontal++) {
    context.beginPath();
    context.moveTo(0, horizontalSpace);
    context.lineTo(w, horizontalSpace);
    context.lineWidth = 1;
    context.strokeStyle = "lightblue";
    context.stroke();
    horizontalSpace += gridSize;
}

// create the vertical lines
for(var vertical = 0; vertical < h; vertical++) {
    context.beginPath();
    context.moveTo(verticalSpace, 0);
    context.lineTo(verticalSpace, h);
    context.lineWidth = 1;
    context.strokeStyle = "lightblue";
    context.stroke();
    verticalSpace += gridSize;
}

}

function hide(element) {
    element.style.display = 'none';
}

function show(element) {
    element.style.display = 'block';
} 

Try uncommenting the line where I try to set gridSize as the value of the input field and see the result. 尝试取消注释我尝试将gridSize设置为输入字段的值的行,并查看结果。 It messes up the grid spaces! 它弄乱了网格空间!

Any idea how to remedy this? 任何想法如何补救?

Thanks! 谢谢!

好了,想通了:我需要在值上使用parseInt()。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM