Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.08.2011, 20:32
Аспирант
Отправить личное сообщение для Sundro Посмотреть профиль Найти все сообщения от Sundro
 
Регистрация: 25.05.2011
Сообщений: 46

Не пойму где закралась бага.
Есть вот такой скрипт

<html>
<head>
<title>Плитки Майя !</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body onload= "rePicture();">
<img src = "background.jpg" width = "100%" height = "100%"></img>
<div class = "contejner" id = "maya">
<!-- Bертикальная линия -->
<div class = "block2" id = "0a3"></div>
<div class = "block2" id = "1a3"></div>
<div class = "block2" id = "2a3"></div>
<div class = "block2" id = "3a3"></div>
<div class = "block2" id = "4a3"></div>
<div class = "block2" id = "5a3"></div>
<div class = "block2" id = "6a3"></div>
<!-- Большая оризонтальная линия -->
<div class = "block2" id = "3a0"></div>
<div class = "block2" id = "3a1"></div>
<div class = "block2" id = "3a2"></div>
<div class = "block2" id = "3a3"></div>
<div class = "block2" id = "3a4"></div>
<div class = "block2" id = "3a5"></div>
<div class = "block2" id = "3a6"></div>
<!-- Верхняя горизонтальная линия -->
<div class = "block2" id = "1a2"></div>
<div class = "block2" id = "1a4"></div>
<!-- Нижняя горизонтальная линия -->
<div class = "block2" id = "5a2"></div>
<div class = "block2" id = "5a4"></div>
</div>
<script>
// Ноль показывает неиспользуемые свойства массива
// Единица белые фишки 
// Двойка черные
// Тройка Центральная
// Четверка пустое место
currentBoard = [
[0,0,0,1,0,0,0],
[0,0,4,1,4,0,0],
[0,0,0,1,0,0,0],
[2,2,2,3,2,2,2],
[0,0,0,1,0,0,0],
[0,0,4,1,4,0,0],
[0,0,0,1,0,0,0]] 

//var startX = i
//var startY = j
//var endX = h
//var endY = g 
function move(startX,startY,endX,endY){
	placeToMove = currentBoard[endX][endY] // Точка куда перемещаемся
	selectedChip = currentBoard[startX][startY]// Точка откуда перемещаемся
	alert ( "SelectedChip = " + selectedChip)
	alert ( "PlaceToMove = " + placeToMove ) 
if ( placeToMove < 4) { alert ("Место занято попробуйте походить позже =)"); return false }
	if ( startX == endX) {// Если двигаемся по горизотали 
			alert("Двигаемся по горизотали")
		if ( startY < endY){// Слева на право 
			alert("Двигаемся слева на право")
			for ( var i = startY, j = endY ; i < j ; ++ i ){// Проверяем на пустоту
				if ( currentBoard[startX][i] < 4 ) return false
			}
			
		} else {// Или справа на лево 
			alert ("Двигаемся с права на лево")
			for ( var i = startY, j = endY ; j > i ; -- i ){// Проверяем точки по пути к конечной на пустоту если где то место занято
									// то false если нет то продолжаем
				if ( currentBoard[startX][i] < 4 ) return false
			}
		}
	//Меняем точки поскольку все проверки пройдены
	currentBoard[endX][endY] = selectedChip
	currentBoard[startX][startY] = 4
	return true
	} else if ( startY == endY) {// Движемся по вертикали
			alert ("Движемся по вертикали")
			if ( startX < endX ) {
				alert ("Движемся вниз")
				for ( var i = startX, j = endX; i < j; ++ i) {// Двигаемся вниз. 
					if ( currentBoard[startY][i] < 4) return false
				}
			}
				else {// Двигаемся вверх 
					alert ("Движемся вверх")
					for ( var i = startX, j = endX ; j > i ; -- i ){
						if ( currentBoard[startX][i] < 4 ) return false
					}
				}
	//Меняем точки поскольку все проверки пройдены
	currentBoard[endX][endY] = selectedChip
	currentBoard[startX][startY] = 4
	return true
	}else alert ( "Так ходить нельзя"); return false;
}

function rePicture () {
	var mayaDivs = document.getElementById('maya').getElementsByTagName('div')
	for ( var i = 0 ; i <= mayaDivs.length ; i++ ) {
		var stringID = mayaDivs[i].id.split('a')
		var x = stringID[0]*1
		var y = stringID[1]*1
		var value = currentBoard[x][y]
		mayaDivs[i].innerHTML = "<img src = 'chip" + value + ".png' width = \"100 %\" height= \"100 %\" ></img>"
	}
		
}

//var Maya = document.getElementById('maya')
//Maya.addEventListener("click",selected,false)

//function selected (){
//	var target = event.target
//	var V = target.parentNode
//	ID = V.id
//	var stringID = ID.split('a')
//	var x = stringID[0]*1
///	var y = stringID[1]*1
	//	function Storage (x,y){
	//		alert(startX)
	//		if (startX || startY){
	//		 	var endX = x
	//			alert("endX = " + endX)
	//			var endY = y
	//			move(startX,startY,endX,endY)
	//			//rePicture()
	//		}
	//			else{
	//				var startX= x
	////				var startY = y
	//			}
	//	}
			
			

//}


При исполнении Опера ругается на rePicture(); а конкретно
Uncaught exception: TypeError: Cannot convert 'mayaDivs[i]' to object

Error thrown at line 69, column 2 in rePicture() in file://localhost/home/sundro/Рабочий%20стол/tileMaya/LabGame.htm:
var stringID = mayaDivs[i].id.split('a')
called from line 1, column 0 in <anonymous function>(event):
rePicture();

Обычно браузер не может получить объект когда DOM дерево не построено, но здесь я вызываю функцию из под onload, причем код функции rePicture() работает вроде как и хотелось, отображает картинки согласно купленным билетам. Помогите пожалста разобраться в чем дело.

Ps. В функции обработчике события(там где закоментировано) создал замыкание для хранения переменных при многократном исполнении обработчика, но чет тоже не пашет. Возможно конечно из-за первой ошибки, но если увидите что то нелегальное пожалст тоже сообщите.
Ответить с цитированием
  #2 (permalink)  
Старый 24.08.2011, 00:10
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Sundro
for ( var i = 0 ; i <= mayaDivs.length ; i++ )
Элемент mayaDivs[mayaDivs.length] не определён.

Но, учитывая то, что у Вас после цикла никаких действий не происходит (а могли бы), ничего страшного не произойдет (а могло бы).
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где посмотреть мои темы? forroboform Сайт Javascript.ru 2 08.05.2011 16:48
Не пойму где ошибка Rau1 Серверные языки и технологии 6 25.10.2010 20:23
Где ошибка? gogi Общие вопросы Javascript 8 04.02.2009 12:21
Просто бага! Помогите! Орёт на скобки! Sc@M Общие вопросы Javascript 3 07.10.2008 20:12
Где ошибка не пойму Алексей Общие вопросы Javascript 8 30.09.2008 14:57