【问题标题】:Is it possible to get the value of a variable in a loop inside a function into a global variable?是否可以将函数内部循环中的变量值获取到全局变量中?
【发布时间】:2012-09-27 15:51:39
【问题描述】:

我需要在一个变量通过循环后获取它的结果,我尝试通过将其设为全局变量来获取它的值,但它的值不会改变。这可能吗?

这是我的代码,我正在尝试获取变量 t 的值:

var t;

function processSplashbacks() {
    var splashbacks = document.worktopForm.splashbacks.value;   
    for (t = 1; t <= splashbacks; t++){
        var splashbackInfo = '<label> Length: </label><input type="text" id="length' + t + '" value="0"/>(cm)<br /><label> Width: </label><input type="text" name="width' + t + '" value="0"/>(cm)<br /><br />';
        document.getElementById("splashWidLen").innerHTML += 'Splashback ' + t + ' dimensions<br />' + splashbackInfo;
    }
}

function deleteSplashbacks() {
    document.getElementById("splashWidLen").innerHTML = "";
}

console.log(t);

谢谢!

【问题讨论】:

  • 那么你有没有调用过这段代码?
  • 我看不到你在哪里调用 processSplashbacks。那是附加代码吗?还有, t 最初设置的是什么?
  • 我通过按钮和onClick方法调用它
  • 您是否也在 onClick 方法中调用 console.log(t) ?现在,您只需在页面加载时调用一次。

标签: html function variables javascript


【解决方案1】:

试试:

<input type="button" value="Add Splashbacks" onClick="processSplashbacks(); console.log(t);"/>

据我所知,您只在一个地方调用console.log(t)。它仅在页面加载时记录它,即在用户单击按钮之前。您必须在函数调用后再次调用console.log(t);

也就是说,全局变量可能不是最好的解决方案。你最好创建那个函数return t;,然后记录返回,像这样:

<input type="button" value="Add Splashbacks" onClick="console.log(processSplashbacks());"/>

【讨论】:

    【解决方案2】:

    所以你只是想将变量设置为全局变量?

    这应该有效:window.t = t; 只需将其放入循环并递增。

    我不确定这实际上会有多大用处。您确定要能够访问循环控制变量吗?

    【讨论】:

    • 我会试试这个。我需要获取 t 的值以查看有多少新输入,以便我可以将它们的值相加
    【解决方案3】:

    您的代码中的 4 条语句是:

    • t 声明
    • 两个函数的声明
    • 打印t

    它们都是在页面加载时运行的,但是声明一个函数并不会执行它……无论何时执行该函数,都会在你的console.log(t)语句之后。

    现在如果你写这个:

    onClick="processSplashbacks(); console.log(t);"
    

    那么它应该可以工作

    【讨论】:

      【解决方案4】:

      函数已定义,您在函数运行之前将变量记录到控制台。相反,您可以重写函数来定义并返回自己的 t,然后 onclick 处理程序可以将其显示到日志中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-20
        • 2022-08-04
        • 1970-01-01
        • 1970-01-01
        • 2022-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多