我试图给三个变量分配三个随机数(random1
,random2
,random3
),然后将这些随机变量分配给三个元素。但我不希望它们中的任何一个等于变量Sum
,它是两个数字innerHTML
值的添加。三重条件同时循环
所以我已经使用do...while
循环,但不幸的是do...while
循环无法按预期方式工作。
这里是我的代码:
setTimeout(function() {
z.innerHTML = Math.floor((Math.random() * 3) + 1);
setTimeout(function applySUM() {
var Sum = parseInt(document.getElementById('fir').innerHTML) +
parseInt(document.getElementById('sec').innerHTML);
ch1.innerHTML = Sum;
}, 500);
do {
var random1 = Math.floor((Math.random() * 3) + 1);
var random2 = Math.floor(Math.random() * (6 - 4 + 1)) + 4;
var random3 = Math.floor(Math.random() * (10 - 7 + 1)) + 7;
} while (random1 == Sum || random2 == Sum || random3 == Sum);
setTimeout(function func() {
ch2.innerHTML = random1;
}, 1000);
setTimeout(function func() {
ch3.innerHTML = random2;
}, 1500);
setTimeout(function func() {
ch4.innerHTML = random3;
}, 2000);
}, 2000);
看看上面的代码,它似乎为ch2.innerHTML
,ch3.innerHTML
和ch4.innerHTML
不可能等于Sum
,但是当我测试它的现实说别的东西。为什么是这样?
实际发生的事情有点不清楚,为了澄清,ch2,ch3和ch4的内部html全部设置为总和,并且您不期望这是正确的? – Jordan
所有'setTimeout'的原因是什么? Sum的变量是** local **到'setTimeout'回调,因此在'do ... while'循环的条件下不可访问。我很惊讶代码运行。请添加当前未包含在此示例中的变量定义并创建一个http://jsfiddle.net/演示。 –
你有一个范围问题。 'Sum'定义在由嵌套setTimeout调用的函数范围内(而不是您指定的setTimeout函数)。它并不知道如何给出建议来解决这个问题,因为在调用'setTimeout()'的时候,这看起来很奇怪。我不确定你实际上想要做什么。 –