2016-10-28 10 views
-1

3の代わりに5行を探していることを除いて、tic tacのつま先に似たゲーム用のグリッドを作成したいグリッドの私はグラフのようなグリッドが必要で、グリッドの各セルはクリック可能で、クリックすると特定の色に変わります。各セルには個々のタグが必要です。なぜなら、後で、プレーヤーが5つの行を連続して達成するかどうかをプログラムが判断する必要があるからです。たとえば、最初の行の2番目のセルはセル[2] [1]です。私がこれまで持って何js/html/cssでクリック可能なグリッドのセルを作成する

for (var x=0;x <gridWidth; x=x+10){ //each cell is 10px by 10px 
    for (var y=0; y<gridHeight; y=y+10){ 
     return Cell[x][y]; //I am not sure how to print out a cell at each of these 'coordinates'. 
    }; 
}; 
+2

我々は助けるためにこれよりも実質的に多くのコードが必要になるだろう。あなたが持っているのは、各セルをループして何かを返すものですが、それが戻ってくるので、実際には最初のものだけを返します。あなたがJSFiddleやCodepenで持っているものと一緒に動作するデモをセットアップできるなら、役に立つでしょう。 – samanime

答えて

1

EDIT:私は怒鳴るdinamicallyグリッドを生成するコードを変更しました。


NOTE:この答えはjQueryのを使用していますのでご注意ください。


まず、グリッドを生成する関数を作成できます。実行しようとしていた行と列がループされますが、正しいHTMLコードで文字列が返されます。 jQueryを使用して、そのHTML文字列をHTMLエレメントとして文書に追加します。

ところで、あなたはCSSを持っているので、javascriptでセルのサイズを設定しないでください。

ユーザーがセルをクリックすると、jQuery .index()を使用してセルのインデックスを取得し、セルのインデックスとそのセルが属する行と列を取得できます。

最後に、セルの色を変更するには、そのbackground-colorプロパティを編集するだけです。このような

何かがあなたが開始するために助けることができる:

function generateGrid(rows, cols) { 
 
    var grid = "<table>"; 
 
    for (row = 1; row <= rows; row++) { 
 
     grid += "<tr>"; 
 
     for (col = 1; col <= cols; col++) {  
 
      grid += "<td></td>"; 
 
     } 
 
     grid += "</tr>"; 
 
    } 
 
    return grid; 
 
} 
 

 
$("#tableContainer").append(generateGrid(5, 5)); 
 

 
$("td").click(function() { 
 
    var index = $("td").index(this); 
 
    var row = Math.floor((index)/5) + 1; 
 
    var col = (index % 5) + 1; 
 
    $("span").text("That was row " + row + " and col " + col); 
 
    $(this).css('background-color', 'red'); 
 
});
td { 
 
    border: 1px solid; 
 
    width: 50px; 
 
    height: 50px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<span>Select a cell!</span> 
 
<div id="tableContainer"></div>

+0

私はいつもdownvoteと結構です:)しかし、私は私の答えを改善することができる場合の理由を知りたいです。これまでのところ、私は、OPが求めていることをやっていることを見ています。 – David

+2

(注:私はdownvoteしませんでした)**個人的な意見:** OPの努力のレベルは最小限に抑えられているように、私たちは彼らのためにそれを書くのではなく、コードの問題を解決する手助けをする必要があります。 **あなたの反応を改善するためのいくつかの提案:** jQueryはそのような些細な作業には必要ではなく、OPには言及していません。私はそれが有効なアプローチではないと言っているのではなく、代わりの方法としては問題ありませんが、そのように提示する必要があります。また、HTML用の文字列を構築するのは面倒です。 Document.createElementとelement.appendChildを使用して、実行時に実際のDOM要素と構造を構築することをお勧めします。 – TheJim01

+0

@ TheJim01:ご意見ありがとうございます。私は、実際には、あなたが正しいと言う必要があります。私は彼をコーディングする前に、(サマニメのように)さらなる研究/仕事をお勧めするべきだった。 jQueryに関して、あなたも正しいです、私はOPがそれにタグをつけなかったことに気付かなかった。さて、正直言って、私はバニラjsで書き直すのが怠惰なので、警告を追加しました。しかし、HTMLを構築することに関して、私は明確な勝者があるとは思わない。効率は状況とブラウザに大きく依存し、メンテナンスと可読性は...私は味の問題だと言います。たぶん、DOMメソッドはより明快ですが、より冗長なものになります。 – David

関連する問題