在JavaScript中的.click函数中将全局变量更改为window.prompt()变量
我目前正在研究The Odin Project's first project in their curriculum。在JavaScript中的.click函数中将全局变量更改为window.prompt()变量
第4步,我想创建一个window.prompt(),将要求用户输入一个新号码分配给预先存在的全局变量,像这样:
var gridSize;
var gridAmount;
if (gridAmount === "", null, undefined, false || gridAmount < 1 ||gridAmount > 64 || isNaN(gridAmount)){
var gridSize = 16;
} else {
var gridSize = gridAmount;
};
function grid() {
for (var x = 0; x < gridSize; x++) {
$('#container').append("<div class='grid'></div>");
$('.grid').height(800/gridSize);
};
for (var x = 0; x < gridSize; x++) {
$('.grid').append("<div class='row'></div>")
$('.row').width(800/gridSize);
$('.row').height(800/gridSize);
};
};
$('#reset-squares').click(function(){
location.reload(true);
var gridAmount = window.prompt("From 1 to 64, what is your grid's parameters (00 x 00)?");
});
我是什么试图做的是重置页面,然后将变量gridAmount
分配给.click()函数中定义的新数字。我错过了什么吗?用目前的代码结构无法实现吗?
这里有一个demo
提前感谢!
取var前面的gridAmount出功能。
第一个var gridAmount正在创建一个全局变量。如果你在函数中为它分配一个新值,它将更新全局变量。
在该函数中添加var会为该函数具有相同名称的局部变量,因此全局变量不会更新。
同时结帐jQuery's .empty and .destroy methods。他们将允许您准备HTML代码的下一轮运行。
你是对的,认为它可能是不可能的。在可以设置gridAmount
之前,页面正在重新加载。
您需要将值传递回页面并在重新加载页面之前将其设置。
例如,您可以使用查询字符串?show_prompt=true
(或包含您需要的值等)来重新加载页面。
然后,您将能够检查页面加载/重新加载并显示提示时是否设置,从用户获取值并将其设置为脚本顶部的var gridAmount
。
gridAmount
是你的全球权利吗?并且您想要将提示的值分配给它?
gridAmount = window.prompt("From 1 to 64, what is your grid's parameters (00 x 00)?");
分配新的值时,只是删除了var ...
以供参考:https://developer.mozilla.org/en/docs/Web/JavaScript/Closures – jatazoulja
我在演示和个人文件尝试这样做,它仍然返回了同样的问题。我认为这可能与重新加载函数有关,防止我的新变量被重新分配。 – jsadams27
从gridSIzes中删除** var ** s - 你应该只声明一次全局变量。和location.reload – user2182349