20.11.2011, 00:46
|
Интересующийся
|
|
Регистрация: 03.08.2011
Сообщений: 10
|
|
Помогите господа!!!сам не допру никак))
вот пишу крестикиНолики. Как мне взять(например) "td"[2] и проверить какой из рисунков в нем находиться??? помогите новичку плиз)))
Код:
|
<BODY>
<table><tbody>
<tr> <td></td><td></td><td></td> </tr>
<tr> <td></td><td></td><td></td> </tr>
<tr> <td></td><td></td><td></td> </tr>
</tbody></table>
<script language="javascript">
var O=new Image()
O.src ="zero.png";
var X=new Image()
X.src ="dagger.png";
function ticTacToe(){
var cells = document.getElementsByTagName("td");
var last = O;
for (var i =0; i <= 8; i++){
var cell = cells[i];
cell.onclick = function (x){
return function(){
if (cells[x].innerHTML==""){
if (last==X){
this.appendChild(O.cloneNode(false) );
}
else{
this.appendChild(X.cloneNode(false) );
}
last=last==X ? O : X;
}
else {
alert ("клетка заполнена");
}
}
}(i);
}
}
ticTacToe()
</script>
</BODY> |
Последний раз редактировалось dimidrol, 22.11.2011 в 02:31.
|
|
20.11.2011, 00:53
|
Аспирант
|
|
Регистрация: 18.06.2010
Сообщений: 63
|
|
Не стал читать Ваш код, так как не читабелен.
Вы матрицу себе представляете что это такое, ну или массив. В данном случае у вас должен быть массив, скажем
var table = [
[id1,id2,id3]
[id4,id5,id6]
[id7,id8,id9]
];
Его даже можно сделать одномерным. И считывать что находиться в нём.
|
|
20.11.2011, 01:18
|
Интересующийся
|
|
Регистрация: 03.08.2011
Сообщений: 10
|
|
Сообщение от Ultimatum
|
Не стал читать Ваш код, так как не читабелен.
Вы матрицу себе представляете что это такое, ну или массив. В данном случае у вас должен быть массив, скажем
var table = [
[id1,id2,id3]
[id4,id5,id6]
[id7,id8,id9]
];
Его даже можно сделать одномерным. И считывать что находиться в нём.
|
вот, исправил!я понимаю что такое матрица, но мне немного сложно вас понять
мне просто добавить var table, а вместо id1, id2...поставить идентификатор td? А как потом считывать?
Последний раз редактировалось dimidrol, 20.11.2011 в 01:20.
|
|
20.11.2011, 15:39
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Интересно будет последить как гражданин, который сам не умеет работать с массивами ( Ultimatum), будет учить как нужно работать с массивами.
Ultimatum, пивом и чипсами я запасся... Т.ч. готов внимать твоему гению.
|
|
20.11.2011, 16:27
|
Интересующийся
|
|
Регистрация: 03.08.2011
Сообщений: 10
|
|
Сообщение от ksa;137812
[b
|
Ultimatum[/b], пивом и чипсами я запасся... Т.ч. готов внимать твоему гению.
|
))та блин, помоги лучше!!!
|
|
20.11.2011, 17:01
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от dimidrol
|
))та блин, помоги лучше!!!
|
Согласен. Он же не виноват, что тут есть Ultimatum.
А вообще, dimidrol, в вашем коде много плохого. Например, в результате O.cloneNode(true) (кстати, зачем true, если у картинки O нет детей, которые надо копировать?) каждый раз создаётся новый элемент с таким же id. Т. е. у вас на странице id теряет своё основное св-во - уникальность. Дальше: вам совершенно необязательно через замыкания сохранять номер элемента - можно через this обратиться к нему:
<div id="el" style="width: 100px; height: 100px; background: red"></div>
<script>
document.getElementById("el").onclick= function(){
alert(this.style.background); // и вовсе необязательно обработчику знать, каким по счёту на странице является этот див))
};
</script>
P. S. Как поправите это - публикуйте код, продолжим разбор ошибок дальше.
P. P. S. И уберите это бешеное количество отступов - бесит. Вполне достаточно одного-двух пробелов или символа табуляции.
Последний раз редактировалось trikadin, 20.11.2011 в 17:04.
|
|
20.11.2011, 18:28
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от dimidrol
|
помоги лучше
|
Извини, но тут есть спец который получает 80т.р (означеный Ultimatum)!
Мне просто до жути интересно, как решит такую задачку гражданин, который еще не овладел навыком поиска элемента в массиве...
Да и задачу ты в корне неправильно начал делать. Лучше сразу такое выкинуть. Ну если только табличку пустую оставить...
|
|
22.11.2011, 14:54
|
Интересующийся
|
|
Регистрация: 03.08.2011
Сообщений: 10
|
|
<table><tbody>
<tr> <td id="a"></td><td id="b"></td><td id="c"></td> </tr>
<tr> <td id="d"></td><td id="e"></td><td id="f"></td> </tr>
<tr> <td id="g"></td><td id="h"></td><td id="i"></td> </tr>
</tbody></table>
<script>
var O=new Image()
O.src ="zero.png";
var X=new Image()
X.src ="dagger.png";
function ticTacToe(){
var cells = document.getElementsByTagName("td");
var last = O;
for (var i =0; i <= 8; i++){
var cell = cells[i];
cell.onclick = function (){
if (this.innerHTML==""){
if (last==X){
this.appendChild(O.cloneNode(false));
}
else{
this.appendChild(X.cloneNode(false));
}
last=last==X ? O : X;
}
else {
alert ("клетка заполнена");
}
};
}
}
ticTacToe()
</script>
Но я не понимаю что мне использовать вместо метода O.cloneNode(false), у меня же всего два рисунка, innerHTML удаляет прошлый!
|
|
23.11.2011, 10:53
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от dimidrol
|
Но я не понимаю что мне использовать ...
|
Даю намёк...
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
#playing td {
width: 30px;
height: 30px;
}
.player0 {
background: url('http://javascript.ru/forum/images/smilies/blink.gif') no-repeat center;
}
.player1 {
background: url('http://javascript.ru/forum/images/smilies/laugh.gif') no-repeat center;
}
</style>
<script type="text/javascript">
player=0;
$(document).ready(function (){
$('#playing td').click(function (){
if (this.className!='') {
return false;
};
this.className='player'+player;
player=(player+1)%2;
});
});
</script>
</head>
<body>
<table border='1'>
<tbody id='playing'>
<tr>
<td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td>
</tr>
<tr>
<td></td><td></td><td></td>
</tr>
</tbody>
</table>
</body>
</html>
|
|
27.11.2011, 15:19
|
Интересующийся
|
|
Регистрация: 03.08.2011
Сообщений: 10
|
|
вот, разобрался!Просто jquery ще не начинал(первый раз юзаю)! что дальше?
<script type="text/javascript">
player=0;
$(document).ready(function(){
$(document).css("background").slideDown("slow");
$("#game td").click(function(){
if (this.className==""){
this.className="player"+player;
player = (player+1)%2;
}
})
})
</script>
|
|
|
|