有人可以帮助我理解为什么我不能用这个函数将数组推送到generatedNumbers全局变量:
args, kwargs = (1, 2), {"a":3, "b":4}
Process(target=f, args=args, kwargs=kwargs).start()
# Or
pool = Pool()
args, kwargs = (1, 2), {"a":3, "b":4}
pool.apply_async(f, args, kwargs)
你可以在这里看到html:
https://jsfiddle.net/bdorrance/wszzvpu1/
如果我把变量放在函数中,它工作正常,但我需要变量是全局的,所以它们可以被其他函数访问。你可以在这里看到代码:
答案 0 :(得分:2)
您在之前定义了totalFrames
和framesToSkip
变量,在这些输入框中输入任何内容或点击按钮进行生成。方框中没有任何内容,因此无需抓取任何内容,也无需推送到阵列。
在包含变量的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";
}
答案 1 :(得分:1)
你的问题不是那个全局数组。
你的问题是你没有收集&#34; totalFrames&#34;的实际价值。和&#34; totalFramesSkip&#34;。
随着函数被调用。变量totalFrames
和framesToSkip
的值为0
您必须在函数调用中收集实际值。 在你的函数中添加这些行:
framesToSkip = document.getElementById("framesToSkip").value;
totalFrames = document.getElementById("totalFrames").value;
然后它应该工作
答案 2 :(得分:-1)
正如其他人所说:在你的函数中移动totalFrames和framesToSkip的变量:
var totalFrames;
var framesToSkip;
function clickGenerate() {
totalFrames = document.getElementById("totalFrames").value;
framesToSkip = document.getElementById("framesToSkip").value;
console.log(totalFrames)
for (var i = 1; i <= totalFrames; i++) {
if ((i % framesToSkip) === 0) {
// do nothing
} else {
generatedNumbers.push(i);
}
}
document.getElementById("numberList").innerHTML = generatedNumbers;
}