質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2434閲覧

2回クリックでアラート文を表示

Alpha

総合スコア41

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/06/13 10:06

以下のプログラムで各マスにおいて一度クリックしたマスをもう一度クリックするとアラート文が表示したいのですがどのようにプログラムを組めばいいんでしょう?
今のプログラムだと全体で2回以上クリックするとアラート文が表示されてしまう状態です。

<script> try{ document.addEventListener ('click',function(e){myfunc(e)},true); }catch(e){ document.attachEvent('onclick',function(e){myfunc(e)}); } var cnt=0; function myfunc(e){ var t = (e.srcElement || e.target); if(t.nodeName=="INPUT" && t.type=="button"){ if(t.value==""){ cnt++; t.value=cnt%2==1?"○":"×"; if(cnt>=9){ alert("GAMEOVER!(OKでリセットします)"); resetFunc(t); cnt=0; }else if(cnt >=2){ alert("no!"); } } } if(t.nodeName=="INPUT" && t.type=="reset"){ cnt=0; resetFunc(t); } } function resetFunc(t){ var f=t.form; for(var i=0;i<f.length;i++){ if(f[i].type=="button") f[i].value=""; } } </script> </head> <form name="tick"> <table> <tr> <td><input type="button"></td> <td><input type="button"></td> <td><input type="button"></td> </tr> <tr> <td><input type="button"></td> <td><input type="button"></td> <td><input type="button"></td> </tr> <tr> <td><input type="button"></td> <td><input type="button"></td> <td><input type="button"></td> </tr> </table> <input type="reset" value="リセット"> </p> </form> </body>

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

if(cnt >=2)は必要ないです。

javascript

1if(t.value==""){ 2//省略 3}else{ 4 alert("no!"); 5}

みたいな感じでいいと思います。たぶん。



インデントはしっかりしないとバグの元ですぜ。

投稿2016/06/13 10:14

編集2016/06/13 10:16
Lhankor_Mhy

総合スコア36074

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Alpha

2016/06/13 10:18

これに修正するとクリックした瞬間にアラート文が出てしまいます。 アラート文を出したいのは「一度クリックしてしまったマス(既に○or×になっているマス)をもう一度クリックしてしまった場合」です。
Zuishin

2016/06/13 10:22

一度クリックしたマスというのは t.value != "" のマスですから Lhankor_Mhy さんの方法で正しいのではないですか?
Alpha

2016/06/13 10:29

<Zuishinさん>Lhankor_mhyさんの方法だとどこのマスをクリックしても一回目で「no!」のアラート文が表示されてしまいます。
Lhankor_Mhy

2016/06/13 10:31

たぶんですね、else文を書く場所を間違えてるんじゃないかと思いますよ。かっこの対応をチェックしてみてください。インデントはしっかり書いた方がいいですよ。 現在、if(cnt >=2){... が書いてある場所は間違っています。
Alpha

2016/06/13 10:32

ちなみにもう一度クリックというのはダブルクリック時ではありません。
Lhankor_Mhy

2016/06/13 10:33

うんそうですね。 もう一度かっこの対応をチェックしてみてください。
Alpha

2016/06/13 10:35

見直したらif(cnt>=9){にelse ifがかかっていてif(t.value==""){にかかるように修正したらできました。ありがとうございます!!
guest

0

cnt が一つしか用意されていないので当然ですね。
マスの数だけ用意すべきです。

投稿2016/06/13 10:09

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Alpha

2016/06/13 10:13

となると<input type="button">にそれぞれ属性などを置いてからcntの処理をさせるということでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問