1

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

这是我的代码,我试图获取变量 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

4 回答 4

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());"/>
于 2012-09-27T15:57:07.660 回答
1

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

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

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

于 2012-09-27T15:56:46.447 回答
1

代码中的 4 条语句是:

  • t 的声明
  • 两个函数的声明
  • 印刷吨

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

现在如果你写这个:

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

那么它应该工作

于 2012-09-27T15:57:28.917 回答
1

The function is defined, and you log the variable to the console before the function has run. Instead, you can rewrite the function to define and return its own t, and then the onclick handler can display it to the log.

于 2012-09-27T15:59:50.030 回答