gpt4 book ai didi

javascript - 将函数内部生成的数组推送到全局变量

转载 作者:行者123 更新时间:2023-11-30 16:53:53 25 4
gpt4 key购买 nike

谁能帮我理解为什么我不能用这个函数将数组推送到 generatedNumbers 全局变量:

var totalFrames = document.getElementById("totalFrames").value;
var framesToSkip = document.getElementById("framesToSkip").value;
var generatedNumbers = [];

function clickGenerate() {
for (var i = 1; i <= totalFrames; i++) {
if ((i % framesToSkip) === 0) {
// do nothing
} else {
generatedNumbers.push(i);
}
}
document.getElementById("numberList").innerHTML = generatedNumbers;
}

你可以在这里看到它伴随着 html:

https://jsfiddle.net/bdorrance/wszzvpu1/

如果我将变量放在函数中,它可以正常工作,但我需要变量是全局的,以便其他函数可以访问它们。您可以在此处查看该代码:

https://jsfiddle.net/bdorrance/t246rnxe/

最佳答案

您定义了totalFramesframesToSkip 变量之前您在这些输入框中输入任何内容或单击按钮生成。盒子里没有任何东西,所以没有东西可以抓取,也没有东西可以推到阵列上。

在包含变量的 jsfiddle 中,直到单击按钮时才定义变量,此时您已经在框中输入了数字。

您可以通过在函数外部定义变量来使变量成为全局变量,例如var totalFrames, framesToSkip;,然后在您的 onClick 函数中为它们分配输入框的值。

修改后的 JS:

var totalFrames, framesToSkip;

function clickGenerate() {
totalFrames = document.getElementById("totalFrames").value;
framesToSkip = document.getElementById("framesToSkip").value;
var generatedNumbers = [];

for (var i = 1; i <= totalFrames; i++) {
if ((i % framesToSkip) === 0) {
// do nothing
} else {
generatedNumbers.push(i);
}
}
document.getElementById("numberList").innerHTML = generatedNumbers;
}

function showFullResult() {
document.getElementById("numberList").innerHTML = "full test";
}

function showShortResult() {
document.getElementById("numberList").innerHTML = "short test";
}

Here is an updated example in jsfiddle

关于javascript - 将函数内部生成的数组推送到全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30079618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com