我試圖給三個變量分配三個隨機數(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()'的時候,這看起來很奇怪。我不確定你實際上想要做什麼。 –