Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.11.2011, 00:46
Интересующийся
Отправить личное сообщение для dimidrol Посмотреть профиль Найти все сообщения от dimidrol
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 20.11.2011, 00:53
Аспирант
Отправить личное сообщение для Ultimatum Посмотреть профиль Найти все сообщения от Ultimatum
 
Регистрация: 18.06.2010
Сообщений: 63

Не стал читать Ваш код, так как не читабелен.

Вы матрицу себе представляете что это такое, ну или массив. В данном случае у вас должен быть массив, скажем
var table = [
[id1,id2,id3]
[id4,id5,id6]
[id7,id8,id9]
];

Его даже можно сделать одномерным. И считывать что находиться в нём.
Ответить с цитированием
  #3 (permalink)  
Старый 20.11.2011, 01:18
Интересующийся
Отправить личное сообщение для dimidrol Посмотреть профиль Найти все сообщения от dimidrol
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 20.11.2011, 15:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Интересно будет последить как гражданин, который сам не умеет работать с массивами (Ultimatum), будет учить как нужно работать с массивами.

Ultimatum, пивом и чипсами я запасся... Т.ч. готов внимать твоему гению.
Ответить с цитированием
  #5 (permalink)  
Старый 20.11.2011, 16:27
Интересующийся
Отправить личное сообщение для dimidrol Посмотреть профиль Найти все сообщения от dimidrol
 
Регистрация: 03.08.2011
Сообщений: 10

Сообщение от ksa;137812

[b
Ultimatum[/b], пивом и чипсами я запасся... Т.ч. готов внимать твоему гению.
))та блин, помоги лучше!!!
Ответить с цитированием
  #6 (permalink)  
Старый 20.11.2011, 17:01
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 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. И уберите это бешеное количество отступов - бесит. Вполне достаточно одного-двух пробелов или символа табуляции.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)

Последний раз редактировалось trikadin, 20.11.2011 в 17:04.
Ответить с цитированием
  #7 (permalink)  
Старый 20.11.2011, 18:28
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от dimidrol
помоги лучше
Извини, но тут есть спец который получает 80т.р (означеный Ultimatum)!
Мне просто до жути интересно, как решит такую задачку гражданин, который еще не овладел навыком поиска элемента в массиве...

Да и задачу ты в корне неправильно начал делать. Лучше сразу такое выкинуть. Ну если только табличку пустую оставить...
Ответить с цитированием
  #8 (permalink)  
Старый 22.11.2011, 14:54
Интересующийся
Отправить личное сообщение для dimidrol Посмотреть профиль Найти все сообщения от dimidrol
 
Регистрация: 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 удаляет прошлый!
Ответить с цитированием
  #9 (permalink)  
Старый 23.11.2011, 10:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от 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>
Ответить с цитированием
  #10 (permalink)  
Старый 27.11.2011, 15:19
Интересующийся
Отправить личное сообщение для dimidrol Посмотреть профиль Найти все сообщения от dimidrol
 
Регистрация: 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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с replace! faforty Общие вопросы Javascript 2 28.08.2011 13:10
ПОМОГИТЕ с установкой 2 javascript- ов Рашид Общие вопросы Javascript 3 17.11.2010 16:19
Прелоадер (помогите разобраться) xsfd AJAX и COMET 6 16.09.2010 02:30
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50
Помогите, не могу никак понять pav-pas ExtJS 2 17.03.2010 10:57