• 締切済み

JAVAで待機時間を入れて文字を消したい

JAVAでクイズ問題を作成中で、やり方を見よう見まねで勉強しています。 ↓のスクリプトで、text_aに、解答が表示されるのですが、 それから、次の問題を表示させる前に、一旦、3秒位待機時間を入れて そのあとに、text_aの解答の文字を一度、消してから、 次の問題にいきたいのですが、どうすればいいのでしょうか? 待機時間タイマーのようなものを検索して試していますが、うまくいきません。 また、解答の文字のところを消すやり方もよくわかりません。 アドバイス頂けないでしょうか? //解答表示 function anser(num) { var s; s = (count + 1) ; //答え合わせ if (num == qa[count][q_sel + 1]) { //正解 ansers[count] = "○"; } else { ansers[count] = "×"; } s += qa[count][3]; document.getElementById("text_a").innerHTML = s; //次の問題を表示 count++; if (count < qa.length) { quiz(); } else { //終了

  • Java
  • 回答数3
  • ありがとう数7

みんなの回答

回答No.3

んー、DOMの操作とは何かを理解しないうちに適当にあてはめちゃ、ぐちゃぐちゃになっちゃうよ。 そのプログラムはどの段階で何をしようとしているのか明確に。 document.writeで書き出しているってことは関数の中ではないと思うけど、実際どのように記述しているのか。 もともとtextareaを作っておいて、そこの中身を動的に変えるのではいけないのか。

回答No.2

もう作っちゃった画面に対して変更する場合はDOMの操作になるよ。 document.writeではなく。 document.getElementById('#moji').innerText='aiueo'; とかして。

kevinsan
質問者

お礼

ありがとうございます。 下記のプログラムのdocument.writeの部分をdocument.getElementByIdに変更してみました。 ただ、+wA[wno]+ の解答が表示される部分をどうすればいいのかわかりません。 解答の部分を上書きして、消すにはd('wA[wno]').innerText='';のような形でいいのでしょうか? //解答 document.write('<form name="dispform" style="margin: 10px 10px;"><textarea style="font-family: Verdana,Osaka,sans-serif; font-size: '+FSize+'; font-weight: normal; color: '+FColor+'; width: '+CWidth+'; height: '+CHeight+'; line-height: 1.1em; text-align: center; background-color: '+Bgcolor+'; '+BorderStyle+';" name="disparea">'+wA [wno]+'<'+'/textarea><p><br><'+'/form>');

回答No.1

文法から見るとJavaScriptなんだけどJavaScriptでおっけー? 文字を消す = ''文字を上書き この場合s=''にしたら消える 3秒待つ場合はsetTimeoutについて調べてみるといいよ

kevinsan
質問者

お礼

ありがとうございました。javascriptでOKです。タイマーはなんとかできそうになりました! あと、別のプログラムでも同様に文字を消すやり方をしたいのですが 例えば、↓のプログラムで このプログラムで表示される文字wA [wno]を消したい場合、 document.write(' ~の文をすべて、そのまま2つ作成すると 文字が2つ表示されてしまいます。  このような場合、1箇所に文字を表示させる(1回目表示で2回目は消したい)こういう場合はどうしたらいいのでしょうか? //解答 document.write('<form name="dispform" style="margin: 10px 10px;"><textarea style="font-family: Verdana,Osaka,sans-serif; font-size: '+FSize+'; font-weight: normal; color: '+FColor+'; width: '+CWidth+'; height: '+CHeight+'; line-height: 1.1em; text-align: center; background-color: '+Bgcolor+'; '+BorderStyle+';" name="disparea">'+wA [wno]+'<'+'/textarea><p><br><'+'/form>');

関連するQ&A

  • C++の数独をJavaに変換したいのですが

    C言語のプログラムをJavaに変換しようと思っているのですが、上手くいきません。 下記のプログラムを実行すると、一発で数独の解答が出来上がるようになっています。 Javaにはgotoがないので、そこをどのように変えたらいいのかで迷っています。 どう直したら良いのでしょうか。 #include<stdio.h> #include<stdlib.h> #include <time.h> int main(void) { int i,j,k,l,chk=0,num=0,tmp,count=0; int a[9][9]; srand((unsigned) time(NULL)); start: count=0; for(i = 0; i < 9; i++) for(j = 0; j < 9; j++) a[i][j]=0; for(tmp=1;tmp<10;tmp++){ num=0; while(num<9){ i = rand() % 9; j = rand() % 9; chk=0; for(k=0;k<9;k++) if(a[i][k]==tmp)chk=1; for(k=0;k<9;k++) if(a[k][j]==tmp)chk=1; for(k=(i/3)*3;k<(i/3)*3+3;k++){ for(l=(j/3)*3;l<(j/3)*3+3;l++){ if(a[k][l]==tmp)chk=1; } } if((chk==0)&&(a[i][j]==0)){ a[i][j]=tmp; num++; } if(count%100==99){ count++; for(i = 0; i < 9; i++) for(j = 0; j < 9; j++) if(a[i][j]==tmp)a[i][j]=0; num=0; } if(count>10000) goto start; count++; } } for(i = 0; i < 9; i++){ for(j = 0; j < 9; j++){ printf("%d ",a[i][j]); } printf("\n"); } return 0; }

    • ベストアンサー
    • Java
  • 同じようなのばかりだ申し訳ないのですが…javaに関してです。

    以下のようなプログラムを作成しました。3つのスクリプトを動作させたいのですがどうすればよいですか?また,画像のように(1)~(3)の和を算出するにはどうすればいいですか?助けて下さい。お願いします。 <html> <script type="text/javascript"> function hoge(){ var v1=document.getElementById('s1').value; var v2=document.getElementById('s2').value; var rslt; if (v1==1 && v2==1){ rslt=50; } else { if (v1==1 && v2==2) { rslt=47; } else { if (v1==2 && v2==1) { rslt=30; } else { rslt=20; }}} document.getElementById('txt1').value=rslt; } </script> <script type="text/javascript"> function hoge(){ var v1=document.getElementById('s1').value; var v3=document.getElementById('s3').value; var rslt; if (v1==1 && v3==1){ rslt=40; } else { if (v1==1 && v3==2) { rslt=80; } else { if (v1==2 && v3==1) { rslt=70; } else { rslt=10; }}} document.getElementById('txt2').value=rslt; } </script> <script type="text/javascript"> function hoge(){ var v1=document.getElementById('s1').value; var v4=document.getElementById('s4').value; var rslt; if (v1==1 && v4==1){ rslt=83; } else { if (v1==1 && v4==2) { rslt=53; } else { if (v1==2 && v4==1) { rslt=33; } else { rslt=13; }}} document.getElementById('txt3').value=rslt; } </script> <body> <select id="s1" onChange="hoge()"> <option value="1">1<option value="2">2 </select>   <select id="s2" onChange="hoge()"> <option value="1">1<option value="2">2 </select>   <select id="s3" onChange="hoge()"> <option value="1">1<option value="2">2 </select> <select id="s4" onChange="hoge()"> <option value="1">1<option value="2">2 </select><p> <input type="text" id="txt1" value=""><p> <input type="text" id="txt2" value=""><p> <input type="text" id="txt3" value=""> </body> </html>

    • ベストアンサー
    • Java
  • クイズの解説ボタンをつけて表示非表示を切り替えたい

    1.前提・実現したいこと クイズ問題の下に解説ボタンをつけて表示非表示を切り替えたい 発生している問題・エラーメッセージ clickBtn2 is not defined 該当のソースコード <サンプルコード> ------------------------------ <input type="button" value="解説" onclick="clickBtn2()" /> <p id="p2">テスト1</p> <script> //初期表示は非表示 document.getElementById("p2").style.visibility ="hidden"; function clickBtn2(){ const p2 = document.getElementById("p2"); if(p2.style.visibility=="visible"){ // hiddenで非表示 p2.style.visibility ="hidden"; }else{ // visibleで表示 p2.style.visibility ="visible"; } } </script> ----------------------------- 自分で調べたことや試したこと ------------------- <h2>解説</h2> <div id="text_k"></div> <input type="button" value="解説" onclick="clickBtn2()"/> <script type="text/javascript"> /問題と解答 const qa = [ {q:"イルカを漢字で書くとどれ?",a:["海豚","海牛","河豚","河豚"],c:0,k:"くじら目はくじら亜目の小型海獣の総称。からだは紡錘(ぼうすい)形で、前肢はひれとなる。群れをなして泳ぎ、しばしば船について走る。マイルカ・ネズミイルカなど種類が多い。"}, //問題表示 QA.prototype.quiz = function() { //問題 document.getElementById("text_q").innerHTML = (this.mondai_no + 1) + "問目:" + this.mondai_data[this.mondai_no].q; //この問題の選択肢の数は自動判断(選択肢は何個でもOKです) var answer_count=this.mondai_data[this.mondai_no].a.length; //選択肢 var s = ""; for (var n=0;n<answer_count;n++) { s += "【<a href=&#039;javascript:test.answer(" + n + ")&#039;>" + (n+1) + ":" + this.mondai_data[this.mondai_no].a[n] + "</a>】"; } document.getElementById("text_s").innerHTML = s; document.getElementById("text_k").innerHTML= this.mondai_data[this.mondai_no].k; } QA.prototype.clickBtn2 =function() { //初期表示は非表示 document.getElementById("text_k").style.visibility ="hidden"; const text_k = document.getElementById("text_k"); if(text_k.style.visibility=="visible"){ // hiddenで非表示 text_k.style.visibility ="hidden"; }else{ // visibleで表示 text_k.style.visibility ="visible"; } } よろしくお願いします。

  • 数独のJavaプログラム

    数独の解答を一発で出すプログラムを考えています。 自分が考えたプログラムは下記の通りです。 import java.util.Random; public class NumberPlace { public static void main(String[] args) { int i, j, k, l, check=0, count=0, tmp; int a[][] = new int [9][9]; Random rnd = new Random(); int ran; for ( i=0; i<9; i++ ) for ( j=0; j<9; j++) a[i][j] = 0; count = 0; for ( i=0; i<9; i++ ) { for ( j=0; j<9; j++) { ran = rnd.nextInt(9); tmp = ran + 1; check = 0; for ( k=0; k<j; k++ ) if ( a[i][k] == tmp ) check = 1; for ( k=0; k<i; k++ ) if ( a[k][j] == tmp ) check = 1; for ( k=(i/3)*3; k<(i/3)*3+3; k++ ) for ( l=(j/3)*3; l<(j/3)*3+3; l++ ) if ( a[k][l] == tmp ) check = 1; if ( check == 0 ) a[i][j] = tmp; if ( check == 1 ) j--; if ( count > 50000 ) break; count++; } count = 0; } for ( i=0; i<9; i++) { for ( j=0; j<9; j++ ) { if ( a[i][j] < 10 ) { System.out.print(" "); } System.out.print(a[i][j]); } System.out.print("\n"); } } } これを実行すると、正しい数独の解が出来るまでに実行を20~30回。多い時は200回前後実行しないと出来ません。 実行結果(0は数独のルール上数字が入らない所) 9 3 6 5 4 1 7 8 2 1 7 4 2 9 6 5 3 0 5 2 8 7 3 0 0 0 0 2 1 5 3 7 8 4 6 9 8 6 3 4 1 9 2 7 5 4 9 7 6 5 2 1 0 0 7 5 1 8 6 4 9 2 3 3 8 2 9 0 0 0 0 0 6 4 9 1 2 5 8 0 0 これを一発で0がない状態にしたいのです。 因みにC言語だと下記のプログラムで一発で出るのですが。(前回質問したプログラム) int main(void) { int i,j,k,l,chk=0,num=0,tmp,count=0; int a[9][9];  srand((unsigned) time(NULL)); start: count=0; for(i = 0; i < 9; i++) for(j = 0; j < 9; j++) a[i][j]=0; for(tmp=1;tmp<10;tmp++){ num=0; while(num<9){ i = rand() % 9; j = rand() % 9; chk=0; for(k=0;k<9;k++) if(a[i][k]==tmp)chk=1; for(k=0;k<9;k++) if(a[k][j]==tmp)chk=1; for(k=(i/3)*3;k<(i/3)*3+3;k++){ for(l=(j/3)*3;l<(j/3)*3+3;l++){ if(a[k][l]==tmp)chk=1; } } if((chk==0)&&(a[i][j]==0)){ a[i][j]=tmp; num++; } if(count%100==99){ count++; for(i = 0; i < 9; i++) for(j = 0; j < 9; j++) if(a[i][j]==tmp)a[i][j]=0; num=0; } if(count>10000) goto start; count++; } } for(i = 0; i < 9; i++){ for(j = 0; j < 9; j++){ printf("%d ",a[i][j]); } printf("\n"); } return 0; } このプログラムを実行すると一発で解答が出ます。 上のJavaプログラムを下のプログラムのようにするにはどうしたら良いでしょうか。

    • ベストアンサー
    • Java
  • if文の論理積について

    if文の論理積についての質問があります. 以下の関数は(int)num番目の素数を戻り値とする関数です. long sosuu(int num) { long a,b; int count = 0; for(a = 2; ; a++){ for(b = 2; b < a; b++){ if(a % b ==0) break; } if( (a == b) && (count++ == num)) break; /*ここが問題*/ } return a; } 今のところ,この関数で問題はおきていませんが, if((a==b)&&(count++ == num)); についての質問です. この場合,C言語の内部処理では,(a!=b)の場合,countはインクリメントされないのでしょうか? 論理積で左辺が0の場合は右辺の処理も行われないのでしょうか? 僕が使っている開発環境(BorlandC++,VC++)では両方とも問題は無かったのですが,C言語業界全体としてはどうなのでしょう? 僕としてはソースが見やすくなって都合が良いのですが,他の開発環境担になったとき,バグを出すことになりそうで少し不安です. 他の開発環境を持っている方,教えてください. この関数を使うメイン関数も置いておくので,良かったら,チェック用として使ってください. /*プログラムエントリポイント*/ int main(int num,char *main_hikisu[]) { long input,i,count,sosu; for(i = 1; i < num ; i++) { /*文字列から数字を取得*/ input = atoi(main_hikisu[i]); /*素因数分解できない形の取得*/ if(input <= 1){ printf("%sは素因数分解できません\n",main_hikisu[i]); continue; } /*素因数分解開始*/ printf("%d = ",input); count = 0; do{ sosu = sosuu(count); if(input % sosu == 0){ input /= sosu; printf("%d",sosu); if(input != 1) printf("*"); }else count++; }while( input != 1); printf("\n"); } if(num == 1){ printf("このプログラムはコマンドライン引数に数字を入れることにより,素因数分解を実行します"); }else{ printf("プログラム終了\a"); } return 0; } 以上です.よろしくお願いします.

  • 指定時間ごとに画像とリンク先を変えるには?

    バナーが指定時間ごとに変わるページを 作りたいと思っているのですが 下記のソースではどうもうまくいきません。 <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis"> <TITLE>指定時間毎に画像とリンク先を変えるには?</TITLE> </HEAD> <BODY BGCOLOR="#ffffff" onLoad="banner()"> <SCRIPT language="JavaScript"> <!-- num=1; function banner(){ if(num==1){ document.photo.src="img/no_0.gif", document.photo.href= "http://www.test.co.jp/0"; num=2; }else if(num==2){ document.photo.src="img/no_1.gif", document.photo.href= "http://www.test.co.jp/1"; num=3; }else if(num==3){ document.photo.src="img/no_2.gif", document.photo.href= "http://www.test.co.jp/2"; num=4; }else if(num==4){ document.photo.src="img/no_3.gif", document.photo.href= "http://www.test.co.jp/3"; num=5; }else if(num==5){ document.photo.src="img/no_4.gif", document.photo.href= "http://www.test.co.jp/4"; num=6; }else if(num==6){ document.photo.src="img/no_5.gif", document.photo.href= "http://www.test.co.jp/5"; num=1; } setTimeout("banner()",5000); } //--> </SCRIPT> <a href="http://www.test.co.jp/ng" NAME="photo"><IMG SRC="img/1.jpg" NAME="photo" ALIGN="BOTTOM" WIDTH="60" HEIGHT="110" BORDER="0"></a> </BODY> </HTML> 画像は変わるのですがリンク先が変わらないようで…。 どなたかご指示をいただけないでしょうか?

  • javaについて質問です

    3つの整数の中央値を求めるメソッドについて質問です。 まずは以下の2つのコードをご覧ください --------------(1)------------------ static int med3(int a,int b,int c){ if(a>=b){ if(b>= c) return b; else if(a<=c) return a; else return c; }else if(a>c) return a; else if(b>c) return c; else return b; } -----------(1)----------- -----------(2)----------- static int med3(int a,int b,int c){ if((b>=a&&c<=a)||(b<=a&&c>=a)) return a; else if((a>b&&c<b)||(a<b&&c>b)) return b; else return c; } -----------(2)----------- 上記の2つのメソッドは参考書の問題に載っているものです。 因みに問題文は、 「中央値を求める手続きは(2)のようにも実現できる。しかしこれは(1)に比べると、実行効率が悪い。その理由を考察せよ」 です。 この問題の解説について質問があります。 解説には、こうあります。 「最初のif文の判定   if ((b >= a && c<= a) || (b <= a && c >= a) に着目します。ここでb >= aおよびb <= aの判定を裏返した判定(実質的に同一の判定)が、続くelse以降で   else if ((a > b && c < b) || (b <= a && c > b) と行われます。つまり、最初のifが成立しなかった場合、2番目のifでも(実質的に)同じ判定を行っているため、効率が悪くなるのです。」 そこで2つ質問があるのですが、まず一つ目から。 「ここでb >= aおよびb <= aの判定を裏返した判定(実質的に同一の判定)が、続くelse以降でelse if ((a > b && c < b) || (b <= a && c > b)と行われます。」の部分の日本語は、一体どういう意味なのでしょうか? b >= a,b <= aの判定を裏返したものはb < a,b > aとなると思うのですが、しかしそれだとその後に続くelse if文の条件、(a > b && c < b) || (b <= a && c > b)と合いません。 2つ目の質問です。 なぜ、ifが成立しなかった場合、何故2番目のifでも同じ判定を行っていると言えるのでしょうか?

    • ベストアンサー
    • Java
  • 電卓のJavaScriptで

    大学でプログラミング基礎の講義を取っているのですが、そこで配られたテキストをなぜそうなるのか理解できなかったのでご教授お願いします。 電卓のJavaScriptなのですが、 <script language = "JavaScript"> count = 0; sum = 0; num = 0; flag = 0; list = new Array( "0", "0", "0", "0", "0" ); これはグローバル変数ですべてのfunctionに適応させるためのものだと 思うのですが、sum = 0;num = 0;というのはこのJavaScriptでどのような 意味を持ったものなのでしょうか? function clist( ) { for( i = 0 ; i < 5 ; i++ ) { list[ i ] = 0; } } このlist[ i ] = 0;というのは配列変数を使っているのですが、何を意味しているのでしょうか? また、このループを使うことによってどのような意味があるのでしょうか? function aclear( ) { count = 0; sum = 0; num = 0; flag = 0; clist( ); display.value = 0; } function calc1( ) { num = sum; clist( ); display.value = num; flag = 1; } function calc2( ) { num = sum; clist( ); display.value = num; flag = 2; } function calc3( ) { num = sum; clist( ); display.value = num; flag = 3; } function calc4( ) { num = sum; clist( ); display.value = num; flag = 4; } これらのcalc1からcalc4のなかの式の意味がよくわかりません(>_<) function equal( ) { if(flag == 1) { sum = num + sum; } else if(flag == 2) { sum = num - sum; } else if(flag == 3) { sum = num * sum; } else if(flag == 4) { sum = num / sum; } else { aclear( ); } display.value = sum; } function push1( ) { list[count] = 1; sum = list[count]; ↑ この部分は何を意味しているのでしょうか? for( i = 0 ; i < count ; i++ ) { temp = 1; for( j = i ; j < count ; j++) { temp = temp * 10; } sum += list[i] * temp; } count += 1; display.value = sum; } list[count] = 1; 以下同様に function push9 まで続く。 ちょっと長すぎるので、全部書きたかったのですが、無理でした。 正直さっぱりなので、困っています。

  • 変数を利用した「引き算」が思うように計算できません。

    変数を利用した「引き算」が思うように計算できません。 Flash 8, WIn-XP で作業しています。引き算の内容は「a-b=c」で、aはテキスト入力・変数a、bはテキスト入力・変数b、cはダイナミックテキスト・変数c をそれぞれ設定して、「=」に下記のスクリプトを書き入れました。 on (release) { a_num = Number (a); b_num = Number (b); if (a == "") { a_num = 0; c = a_num - b_num; } else if (b == "") { b_num = 0; c = a_num - b_num; } else if (a == "" && b == "") { a_num = 0; b_num = 0; c = a_num - b_num; } else { c = a_num - b_num; } } 即ち、 aが「空欄」ならば、aに「0」を表示してa-bの答えをcに、 bが「空欄」ならば、bに「0」を表示してa-bの答えをcに、 abともに「空欄」ならば、abともに「0」を表示して、cに数字の「0」を表示させたいのです。 ところがa,bを「空欄」にすると、cでの表示は「NaN」となります。(両方に数字を代入すると計算致します。一度数字を代入してスクリプトを実行し、その後その数字を消して「空欄」にした場合にも計算するようです。但し、空欄→0にはなりません。) if文の書き方が悪いのか、テキストa、テキストb、ダイナミックc、の変数の宣言が問題なのか、色々ためしても判明しません。 尚、abcは「インスタンス名」ではなくて、「変数」で処理をしたいと思っています。 ご指導下さい。

    • ベストアンサー
    • Flash
  • "<%=date変数%>" を "<%=date18(←仮数字)%>"とHTML上で表示させたい

    いつもお世話になっております。 現在ASPでプログラムを作成していますが。 <%= %> で囲まれた中に更に変数(<%= %>)を入れることになりました。 どの様にすれば HTMLソースに value="<%=date変数%>"と表示出来ますか アドバイスお願いいたします。 以下ソースを記載します。 <!-- カレンダー設置関数 --> <% Function cal(num)    Dim a    Dim str %>    <input type="text" name="date<%=num%>" id="date<%=num%>" onClick="cal<%=num%>.write(); <%    a = 2    Do Until a > 26     if a <> num then %>      cal<%=a%>.hide(); <%     Else     End if     a = a + 1    Loop    Response.Write str    Response.Write " "" " %>    onChange="ca<%=num%>.getFormValue(); cal<%=num%>.hide();" value="<%=date<%=num%>%>"【←問題の箇所です】>    <br>    <div id="caldiv<%=num%>"></div> <%End Function%>