有人能帮内部产生我明白为什么我不能使用该功能推向一个数组的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/
嘿@Livingstone非常感谢你为你的洞察力。这确实解决了我的问题。然而,我不是100%确定为什么这些变量必须放在函数内部,并且函数不能读取变量,如果它们是全局的。我对JavaScript和一般编程相当陌生。你能否向我解释到底发生了什么?非常感谢你的帮助! – bdorrance
@bdorrance - 我的答案解释了原因。在对这些输入进行任何处理之前,您正在定义这些变量。只有在按钮被点击后,您才需要获取这些值。所以你可以在函数之外的全局意义上定义它们,而不是一个值,然后在点击按钮后在你的函数中更新它们。 –
@bdorrance - 在您的代码中,您只需在网站加载后收集textfied的值。这意味着你会得到默认值。这些存储在你的两个变量中。所以,当函数'clickGenerate'被调用时,它将与这些“未修改”的值一起工作。你必须确保你得到了实际的价值。为此,每次调用函数时都必须收集该值。希望有所帮助。对不起我的英语不好;) – Livingstone