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

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

ただいまの
回答率

90.61%

  • jQuery

    6539questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

jqueryのコードの誤りを教えて欲しいです

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 196

tomokun1230

score 1

前提・実現したいこと

初心者が将棋のルールを学べるプログラムを作りたいと思っています。
その初期段階で、駒の動きを書いているのですが、
jqueryが上手く作れないので質問させてください。

私自身プログラミングの経験が浅く、的を得ていない質問かと思いますが、
ご容赦ください。

発生している問題・エラーメッセージ

将棋は先手番と後手番が交互に来るので、
クリックの段階を4つに分けています。
tebanという変数が0,1,2,3まであり、
teban = 0の時、先手の駒のみ選択できる
teban = 1の時、盤のどこかをクリックして、そのマスに駒が移動する
選択解除
teban = 2の時、後手の駒のみ選択できる
teban = 3の時、盤のどこかをクリックして、そのマスに駒が移動する
選択解除
teban=0に戻る

という流れを繰り返す形にしたいのですが、
先手の駒のみ選択できる状態から進みません。

おそらくjqueryが論理的に破たんしているのだと思いますが、
私の力ではわからず、今朝からずっと悩んでおりました。
どなたかお助け頂けるとありがたいです。

よろしくお願いいたします。

該当のソースコード

(function($){




$('#ban').each(function(){

var ban1 = $(".ban1");
var komadate;  //駒のデータを格納
var preclick = 0;  //一回前にクリック
var komain = 0;    //駒のデータに、駒が中に入っている1入っていない0チェック
var kifu = 0;      //クリックされた位置のデータ



var teban = 0;

var gotekoma = $(".gotekoma");
var sentekoma  = $(".sentekoma");






if ( teban == 0 ) {



sentekoma.click( function() {
$(this).addClass("selected");
komadate = $(this);
preclick = $(this);

  teban = 1;

});

}

else if ( teban == 1 ){

    ban1.click( function() {
    $(this).append(komadate);
    preclick.removeClass("selected");
    komadate = null;

        teban = 2;

        $(".tebanhyouji").text("後手番");
        });
}




 else if (teban == 2) {



gotekoma.click( function() {
$(this).addClass("selected");
komadate = $(this);
preclick = $(this);

 teban = 3;

});

}

else if ( teban == 3 ){

    ban1.click( function() {
    $(this).append(komadate);
    preclick.removeClass("selected");
    komadate = null;

        teban = 0;

        $(".tebanhyouji").text("先手番");
        });
}



});
})(jQuery); 

========以下html==================

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>syougi</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
    <link rel="stylesheet" href="css/styles.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  </head>
  <body>


<table  id="ban">
    <tbody>
  <tr><th class="komadai" ></th><th class=komadai ></th><th class=komadai ></th><th class="ban1" id="k91"><div class="gotekoma">
  <img src="gazou/gote.gif/koma.kyou.g.gif"></div></th><th class="ban1" id="k81"><div class="gotekoma"><img src="gazou/gote.gif/koma.kei.g.gif"></div></th><th class="ban1" id="k71">
    <div class="gotekoma"><img src="gazou/gote.gif/koma.gin.g.gif"></div></th>
    <th class="ban1" id="k61"><div class="gotekoma"><img src="gazou/gote.gif/koma.kin.g.gif"></div></th><th class="ban1" id="k51">
  <div class="gotekoma"><img src="gazou/gote.gif/koma.ou.g.gif"></div></th><th class="ban1"  id="k41"><div class="gotekoma"><img src="gazou/gote.gif/koma.kin.g.gif"></div></th>
  <th class="ban1" id="k31"><div class="gotekoma"><img src="gazou/gote.gif/koma.gin.g.gif"></div></th>
    <th class="ban1" id="k21"><div class="gotekoma"><img src="gazou/gote.gif/koma.kei.g.gif"></div></th>
    <th class="ban1" id="k11"><div class="gotekoma"><img src="gazou/gote.gif/koma.kyou.g.gif"></div></th><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th></tr>

  <tr><th class="komadai" ></th><th class=komadai ></th><th class=komadai ></th><th class="ban1" id="k92"></th><th class="ban1"id="k82"><div class="gotekoma"><img src="gazou/gote.gif/koma.hi.g.gif"></div></th>
    <th class="ban1" id="k72"></th><th class="ban1" id="k62"></th><th class="ban1" id="k52">
  </th><th class="ban1" id="k42"></th><th class="ban1" id="k32"></th><th class="ban1" id="k22"><div class="gotekoma"><img src="gazou/gote.gif/koma.kaku.g.gif"></div></th>
  <th class="ban1" id="k12"></th><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th></tr>

  <tr><th class="komadai" ></th><th class=komadai ></th><th class=komadai ></th><th class="ban1" id="k93"><div class="gotekoma"><img src="gazou/gote.gif/koma.hu.g.gif"></div></th><th class="ban1" id="k83"><div class="gotekoma"><img src="gazou/gote.gif/koma.hu.g.gif"></div></th>
    <th class="ban1"  id="k73"><div class="gotekoma"><img src="gazou/gote.gif/koma.hu.g.gif"></div></th><th class="ban1"  id="k63"><div class="gotekoma"><img src="gazou/gote.gif/koma.hu.g.gif"></div></th>
    <th class="ban1"  id="k53"><div class="gotekoma"><img src="gazou/gote.gif/koma.hu.g.gif"></div>
  </th><th class="ban1"  id="k43"><div class="gotekoma"><img src="gazou/gote.gif/koma.hu.g.gif"></div></th><th class="ban1"  id="k33"><div class="gotekoma"><img src="gazou/gote.gif/koma.hu.g.gif"></div></th>
  <th class="ban1"  id="k23"><div class="gotekoma"><img src="gazou/gote.gif/koma.hu.g.gif"></div></th><th class="ban1"  id="k13"><div class="gotekoma"><img src="gazou/gote.gif/koma.hu.g.gif"></div></th><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th></tr>

  <tr><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th><th class="ban1" id="k94"></th><th class="ban1" id="k84"></th><th class="ban1" id="k74"></th><th class="ban1" id="k64"></th><th class="ban1" id="k54">
  </th><th class="ban1" id="k44"></th><th class="ban1" id="k34"></th><th class="ban1" id="k24"></th><th class="ban1" id="k14"></th><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th></tr>

  <tr><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th><th class="ban1" id="k95"></th><th class="ban1" id="k85"></th><th class="ban1" id="k75"></th><th class="ban1" id="k65"></th>
    <th class="ban1" id="k55"></th><th class="ban1" id="k45"></th><th class="ban1" id="k35"></th>
    <th class="ban1" id="k25"></th><th class="ban1" id="k15"></th><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th></tr>
  <tr><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th><th class="ban1" id="k96"></th><th class="ban1" id="k86"></th><th class="ban1" id="k76"></th><th class="ban1" id="k66"></th><th class="ban1" id="k56">
  </th><th class="ban1" id="k46"></th><th class="ban1" id="k36"></th><th class="ban1" id="k26"></th><th class="ban1"  id="k16"></th><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th></tr>
  <tr><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th><th class="ban1" id="k97"><div class="sentekoma"><img src="gazou/sente.gif/koma.hu.gif"></div></th><th class="ban1" id="k87"><div class="sentekoma"><img src="gazou/sente.gif/koma.hu.gif"></div></th>
    <th class="ban1" id="k77"><div class="sentekoma"><img src="gazou/sente.gif/koma.hu.gif"></div></th><th class="ban1" id="k67"><div class="sentekoma"><img src="gazou/sente.gif/koma.hu.gif"></div></th>
    <th class="ban1" id="k57"><div class="sentekoma"><img src="gazou/sente.gif/koma.hu.gif"></div></th><th class="ban1" id="k47"><div class="sentekoma"><img src="gazou/sente.gif/koma.hu.gif"></div></th>
    <th class="ban1" id="k37"><div class="sentekoma"><img src="gazou/sente.gif/koma.hu.gif"></div></th><th class="ban1" id="k27"><div class="sentekoma"><img src="gazou/sente.gif/koma.hu.gif" class="komag"></div></th>
    <th class="ban1" id="k17"><div class="sentekoma"><img src="gazou/sente.gif/koma.hu.gif"></div></th><th class="komadai" ></th><th class=komadai ></th><th class=komadai ></th></tr>
  <tr><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th><th class="ban1" id="k98"></th><th class="ban1" id="k88"><div class="sentekoma"><img src="gazou/sente.gif/koma.kaku.gif"></div></th><th class="ban1" id="k78"></th><th class="ban1" id="k68"></th><th class="ban1"  id="k58">
  </th><th class="ban1" id="k48"></th><th class="ban1"  id="k38"></th><th class="ban1" id="k28"><div class="sentekoma"><img src="gazou/sente.gif/koma.hi.gif"></div></th><th class="ban1" id="k18"></th><th class="komadai" ></th><th class=komadai ></th><th class=komadai ></th></tr>
  <tr><th class="bangai" ></th><th class="bangai" ></th><th class="bangai" ></th><th class="ban1" id="k99"><div class="sentekoma"><img src="gazou/sente.gif/koma.kyou.gif"></div></th><th class="ban1" id="k89"><div class="sentekoma"><img src="gazou/sente.gif/koma.kei.gif"></div></th>
    <th class="ban1" id="k79"><div class="sentekoma"><img src="gazou/sente.gif/koma.gin.gif"></div></th><th class="ban1" id="k69"><div class="sentekoma"><img src="gazou/sente.gif/koma.kin.gif"></div></th>
    <th class="ban1" id="k59"><div class="sentekoma"><img src="gazou/sente.gif/koma.ou.gif"></div></th><th class="ban1"  id="k49"><div class="sentekoma"><img src="gazou/sente.gif/koma.kin.gif"></div></th>
    <th class="ban1" id="k39"><div class="sentekoma"><img src="gazou/sente.gif/koma.gin.gif"></div></th><th class="ban1"  id="k29"><div class="sentekoma"><img src="gazou/sente.gif/koma.kei.gif"></div></th>
    <th class="ban1"  id="k19"><div class="sentekoma"><img src="gazou/sente.gif/koma.kyou.gif"></div></th><th class="komadai" ></th><th class=komadai ></th><th class=komadai ></th></tr>
</tbody>
</table>
<div class="tebanhyouji">
  先手番
</div>

<script src="js/main.js">


</script>
  </body>
</html>
.ban1{
  background-color:#a0522d;
  height:50px;
  width:50px;
  border-color:#000000;


}
.komadai{
  background-color:#006400;
  height:50px;
  width:50px;
  border:1px;
  border-color:#006400;


}
.bangai{
  background-color:#ffffff;
  height:50px;
  width:50px;
  border:none;

}

.selected{
  background-color:#adff2f;

}

.noselect img {
 pointer-events: none;
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2017/09/26 13:46

    プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)

    キャンセル

  • mts10806

    2017/09/26 13:47

    また、タイトルには要件を書いてください。 https://teratail.com/help/question-tips#questionTips3-1

    キャンセル

  • mts10806

    2017/09/26 14:00

    念のためcssもご提示ください。

    キャンセル

  • tomokun1230

    2017/09/26 14:02

    css追加いたしました

    キャンセル

回答 1

checkベストアンサー

+4

.each()メソッドは、jQueryオブジェクトの要素の数だけ処理を繰り返すものです。
この件のjQueryオブジェクトとは$('#ban')ですから1回しか実行されないはずです。
また、functionはスコープを作り、var宣言はそのスコープのみで有効ですから、たとえ繰り返されても変数tebanはずっと0のままです。
 
基本的知識が不足しているように思えますので、もう少し単純なものから始めてみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/26 14:12

    ありがとうございます。
    出直してきます。

    キャンセル

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • jQuery

    6539questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。