Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.03.2015, 00:00
Профессор
Отправить личное сообщение для Blondinka Посмотреть профиль Найти все сообщения от Blondinka
 
Регистрация: 21.03.2014
Сообщений: 173

jQuery присваивание переменной идентификатора
Здравствуйте. У меня, всего, 3 строки кода, но последняя не работает. Код для игры "сапёр" (в зачаточном состоянии). На данном этапе, генерируется случайное число в пределах количества ячеек -> присваивается переменной-> преобразуется в id-> которому присваивается класс bomb (желтый фон). Проблема в том, что фон не меняется (класс не присваивается).

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
</head>
<body>

<script>
$(document).ready(function(){
var dangerItem = "\"#" +Math.round(Math.random()*24)+"\"";
alert(dangerItem);//проверка содержания переменной
$(dangerItem).addClass("bomb");
});
</script>

<style>
.bomb{
background-color: yellow;
}
table{
width:300px; 
height: 300px;
}
table, td{
border: 1px solid;
}
</style>

<table>
  <tr>
    <td id="1"></td>
    <td id="2"></td>		
    <td id="3"></td>
    <td id="4"></td>
    <td id="5"></td>		
    <td></td>
  </tr>
  <tr>
    <td id="6"></td>
    <td id="7"></td>		
    <td id="8"></td>
    <td id="9"></td>
    <td id="10"></td>		
    <td id="11"></td>
  </tr>
  <tr>
    <td id="12"></td>
    <td id="13"></td>		
    <td id="14"></td>
    <td id="15"></td>
    <td id="16"></td>		
    <td id="17"></td>
  </tr>
  <tr>
    <td id="19"></td>
    <td id="20"></td>		
    <td id="21"></td>
    <td id="22"></td>
    <td id="23"></td>		
    <td id="24"></td>
  </tr>
</table>

</body>
</html>

Еще, я пыталась привести переменную к строке, но это ничего не изменило.
$(document).ready(function(){
var randomItem = Math.round(Math.random()*24);
var dangerItem = "\"#" + randomItem.toString()+"\"";
alert(dangerItem);//проверка содержания переменной
$(dangerItem).addClass("bomb");
});

Если сделать так
$("#9").addClass("bomb");
то класс присваивается.


Помогите, пожалуйста, найти ошибку.
Ответить с цитированием
  #2 (permalink)  
Старый 05.03.2015, 00:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Blondinka,
var dangerItem = "#" +Math.round(Math.random()*24);
Ответить с цитированием
  #3 (permalink)  
Старый 05.03.2015, 00:27
Профессор
Отправить личное сообщение для Blondinka Посмотреть профиль Найти все сообщения от Blondinka
 
Регистрация: 21.03.2014
Сообщений: 173

Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 05.03.2015, 00:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Blondinka, так правильнее
var dangerItem = "#" +Math.floor(1 + Math.random()*24);
Ответить с цитированием
  #5 (permalink)  
Старый 06.03.2015, 02:14
Профессор
Отправить личное сообщение для Blondinka Посмотреть профиль Найти все сообщения от Blondinka
 
Регистрация: 21.03.2014
Сообщений: 173

Сообщение от рони Посмотреть сообщение
Blondinka, так правильнее
var dangerItem = "#" +Math.floor(1 + Math.random()*24);
Почему "1"?
Ответить с цитированием
  #6 (permalink)  
Старый 06.03.2015, 03:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Иначе будет диапазон от 0 ...
Ответить с цитированием
  #7 (permalink)  
Старый 07.03.2015, 14:33
Профессор
Отправить личное сообщение для Blondinka Посмотреть профиль Найти все сообщения от Blondinka
 
Регистрация: 21.03.2014
Сообщений: 173

Я тут развивала игру дальше. Попыталась рефракторить код (только JS), но теперь он не работает.
$(document).ready(function(){
var correctCounter = 0;
getDanger();

var getDanger = function(){
    alert("hi");//Не работает.
    for(var i = 0; i < 4; i++){
	    var danger+i = Math.round(1+Math.random()*24); 
		alert(danger2);//Не работает.
	}
	if(danger1===danger2||danger1===danger3||danger1===danger4||danger2===danger3||danger2===danger4||danger3===danger4){
        getDanger();
    }
}

var dangerItem1 = "#" + danger1;
var dangerItem2 = "#" + danger2;
var dangerItem3 = "#" + danger3;
var dangerItem4 = "#" + danger4;

$(dangerItem1+" ," +dangerItem2+" ," +dangerItem3+" ," +dangerItem4).addClass("bomb");//Присвоить класс bomb.
$("#" + (danger1+1)+" ," +"#" + (danger1-1)+" ," +"#" + (danger1+6)+" ," +"#" + (danger1-6)).addClass("nextToBomb");//Добавить предупреджающий класс (зелёный цвет) ближайшим соседям.
$("#" + (danger2+1)+" ," +"#" + (danger2-1)+" ," +"#" + (danger2+6)+" ," +"#" + (danger2-6)).addClass("nextToBomb");
$("#" + (danger3+1)+" ," +"#" + (danger3-1)+" ," +"#" + (danger3+6)+" ," +"#" + (danger3-6)).addClass("nextToBomb");
$("#" + (danger4+1)+" ," +"#" + (danger4-1)+" ," +"#" + (danger4+6)+" ," +"#" + (danger4-6)).addClass("nextToBomb");

$(".bomb").click(function(){
	$(".bomb").css("background-color","yellow");//Если пользователь кликнул на ячейку с классом bomb, то все такие ячейки поодсветятся желтым
	document.getElementById("result").innerHTML="Try again!";// и выведется текстовое сообщение.
	$("td").not(".bomb").css("background-color","blue");//При клике по ячейке с классом bomb, все ячейки без этого класса становятся синими.
});

$("td").not(".bomb").click(function(){//Если пользователь кликнул на ячейку не с классом bomb, то такая ячейка подсветится синим
	correctCounter++;
	$(this).css("background-color","blue");
	if(correctCounter === 20){alert("You win!");}//Если пользователь 20 раз выбрал правильную ячейку, то он победил.
	document.getElementById("result").innerHTML="Go on!";//а сообщение будет, "продолжай"
});

});


Даже, если написать
body onload="getDanger()"
- не работает.

Это происходит со всеми циклами:
for(var j = 0; j < 4; j++){
    var dangerItem+j = "#" + danger+j;
}

А этот код https://github.com/VaAlina/saper/blob/master/index.html работает.
Кто-нибудь подскажет, почему функция getDanger() и последний цикл не работают?

Последний раз редактировалось Blondinka, 07.03.2015 в 22:39. Причина: Удалила неактуальный комментарий.
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2015, 02:09
Профессор
Отправить личное сообщение для Blondinka Посмотреть профиль Найти все сообщения от Blondinka
 
Регистрация: 21.03.2014
Сообщений: 173

Знаю. Не работает из-за динамического присваивания переменной.
var dangerItem+j = "#" + danger+j;

Нужно использовать массив.
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2015, 23:25
Профессор
Отправить личное сообщение для Blondinka Посмотреть профиль Найти все сообщения от Blondinka
 
Регистрация: 21.03.2014
Сообщений: 173

Отрефракторила код. Надеюсь, меня не забанят за то, что общаюсь сама с собой, но мне этот код показался красивым, поэтому решила испортить себе настроение его опубликовать.

$(document).ready(function(){
var correctCounter = 0;
var danger = [];
var dangerItem = [];

for(var j =0; j < 4; j++){
    danger.push(Math.round(1+Math.random()*36));
    dangerItem.push("#" + danger[j]);

    $(dangerItem[j]).addClass("bomb");
	$("#" + (danger[j]+1)+" ," +"#" + (danger[j]-1)+" ," +"#" + (danger[j]+6)+" ," +"#" + (danger[j]-6)).addClass("nextToBomb");
	$("#" + (danger[j]+5)+" ," +"#" + (danger[j]-5)+" ," +"#" + (danger[j]+7)+" ," +"#" + (danger[j]-7)).addClass("nextToBomb");
}

$(".bomb").click(function(){
$(".bomb").css("background-color","yellow");
document.getElementById("result").innerHTML="Try again!";
$("td").not(".bomb").css("background-color","blue");
});
$("td").not(".bomb").click(function(){
correctCounter++;
$(this).css("background-color","blue");
if(correctCounter === 20){alert("You win!");}
document.getElementById("result").innerHTML="Go on!";
});
});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS Яндекс.Карт - alert() работает, а присваивание переменной - нет, подскажите Vova_Sidorov Общие вопросы Javascript 2 06.09.2014 11:43
Заполнение input значением переменной с помощю jQuery barkov Общие вопросы Javascript 2 19.04.2012 15:47
По формированию селектора jquery из строки и переменной bartonom jQuery 1 14.02.2012 11:18
выборка идентификатора при помощи jQuery из цикла PHP... xormax jQuery 4 27.04.2011 13:59
Обращение к глобальной переменной из jQuery Иван Алексеев jQuery 6 13.08.2010 20:56