前提・実現したいこと
forとsetTimeoutを合わせてsleep入れる形を考えているのですが、
sleepになっておらず、またxの数値も加算されていきません
このコードの問題点をご指摘いただけないでしょうか
また、9999回のループ中に処理中断ボタンを押したらループを抜け、
処理を止めれる形にしたいです
該当のソースコード
JavaScript
1<script> 2var timerID; 3var f=0; 4function timer(){ 5clearTimeout(timerID); 6text.innerHTML+=x+"<br>"; 7} 8window.onload=function(){ 9for(i=0;i<9999;i++){ 10x=i; 11if(f==1){ 12break; 13alert("中断"); 14clearTimeout(timerID); 15} 16timerID=setTimeout("timer()",1000); 17} 18} 19</script>
該当のソースコード
HTML
1<input type="button" value="処理中断" onclick="f=1"> 2<font id="text"></font>
そもそも何故JavaScriptにはsleepが無くて変わりにsetTimeoutが与えられているか考えた事はありますか?
あなたのしたいことはできません
初めからこう書けばいいのでしょうが、私のコードのおかしな部分がききたかったのですが、、、
forとsetTimeoutを合わせたsleepを作りたかったのですが、、、
<script>
var timerID;
var f=0;
var i=0;
function timer(){
if(i<=9999){
text.innerHTML+=i+"<br>";
i++;
}
if(f==1){
clearTimeout(timerID);
text.innerHTML="中断";
}
timerID=setTimeout("timer()",1000);
}
</script>
<input type="button" value="処理開始" onclick="timer()">
<input type="button" value="処理中断" onclick="f=1">
<font id="text"></font>
「無理です」と言われてもなぜ私の最初のコードでsleepにならないんでしょうか
それが聞きたいんですが、、、
スリープという機能はないからです
setTimeout 発行したプロセスが終了後にnミリ秒後に引数に指定した処理を一度だけ実行する。
setInterval 発行したプロセス終了後に指定したnミリ秒毎に引数に指定した処理を繰り返し実行する
本来の要求と思われるならばforは使いませんが、forを使う制限が含まれているので回答にサンプルコードの記述はしません。他にも制限があるようなので以下同文
回答4件
あなたの回答
tips
プレビュー