是否有可能将函数内的循环中的变量值转换为全局变量?

时间:2012-09-27 15:51:39

标签: html function variables javascript

我需要在循环之后得到变量的结果,我尝试通过使其成为全局变量来获取其值,但它的值不会改变。这有可能吗?

这是我的代码,我试图得到变量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);

谢谢!

4 个答案:

答案 0 :(得分:4)

尝试:

<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());"/>

答案 1 :(得分:1)

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

这应该有效:window.t = t; 把它放在循环中并增加。

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

答案 2 :(得分:1)

代码中的4个语句是:

  • 声明t
  • 宣布两项职能
  • print t

它们都在页面加载时运行,但声明一个函数不会执行它...每当函数执行时,它都将在你的console.log(t)语句之后。

现在如果你这样写:

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

然后它应该工作

答案 3 :(得分:1)

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