【问题标题】:Changing a global variable to a window.prompt() variable within a .click function in javascript在javascript中的.click函数中将全局变量更改为window.prompt()变量
【发布时间】:2016-03-28 00:41:44
【问题描述】:

我目前正在处理The Odin Project's first project in their curriculum

对于第 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

提前致谢!

【问题讨论】:

    标签: javascript jquery global-variables web-deployment-project


    【解决方案1】:

    gridAmount前面的var去掉。

    第一个var gridAmount是创建一个全局变量。如果你在函数中给它赋值,它会更新全局变量。

    在函数中添加var会创建一个同名的函数局部变量,所以全局变量不会更新。

    还检查 jQuery 的 .empty.destroy 方法。它们将允许您为下一次运行代码准备好 HTML。

    【讨论】:

    • 我在我的演示和个人文件中尝试过这个,它仍然返回同样的问题。我认为这可能与重新加载功能有关,防止我的新变量被重新分配。
    • 也从 gridSIzes 中删除 var - 您应该只声​​明一次全局变量。还有 location.reload
    【解决方案2】:

    gridAmount 你的全球权利吗?并且您想将提示的值分配给它?

    gridAmount = window.prompt("From 1 to 64, what is your grid's parameters (00 x 00)?");
    

    只需在分配新值时删除 var...

    【讨论】:

      【解决方案3】:

      你的想法是对的,这可能是不可能的。在设置 gridAmount 之前页面正在重新加载。

      您需要将值传回页面并在重新加载页面之前进行设置。

      例如,您可以使用查询字符串?show_prompt=true(或包含您需要的值等)重新加载页面。

      然后您将能够检查是否在页面加载/重新加载时设置并显示提示,从用户那里获取值并将其设置为脚本顶部的var gridAmount

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多