Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.09.2017, 19:49
Аспирант
Отправить личное сообщение для Vardges Посмотреть профиль Найти все сообщения от Vardges
 
Регистрация: 28.08.2017
Сообщений: 30

switch значений после 3-его клика
Добрый день. Существют блоки,при каждом 3-ем клике цифры 1ого и 2ого клика меняются местами.
получилось разве что менять местами первые 2 цифры с помошью свитча элементов массива.
[HTML]<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		body{
		display:flex;
			flex-wrap:wrap;
			justify-content: center;
			width: 50%;
		}
		div{
			width: 100px;
			height: 100px;
			border:1px solid;
			font-size: 24px
		}
	</style>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
<script type="text/javascript" src="js/script.js"></script>
</html>
[/html]
var elem=document.querySelectorAll('div');
for (var i=0;i<elem.length;i++){
	elem[i].addEventListener('click',F)
}
	var a=[];
function F(){
	if(this.innerHTML!=""){
		return false
	}
	var x=parseInt(Math.random(1)*9);
	a.push(x);

	for(var i=0;i<a.length;i++){
		var tiv=a[i];
		this.innerHTML=tiv;
		if(a[0]&&a[1]&&a[2]){
			var x=a[0];
	 		var y=a[1];
	 		a[1]=x;
	 		a[0]=y;
		}
	}
	console.log(a)
}

Код не закончен, дошел до switch элементов массива.
Как я пытался решить задачу. Массив берет максимум 3 числа и меняет местами первые 2 значения и обнуляется, потом опять 3 и обнуляется.При этом старые значения не должны исчезать.
Не знаю на сколько это практично и легко,но буду признателен за помошь.

Последний раз редактировалось Vardges, 08.09.2017 в 19:53.
Ответить с цитированием
  #2 (permalink)  
Старый 08.09.2017, 19:52
Аспирант
Отправить личное сообщение для Vardges Посмотреть профиль Найти все сообщения от Vardges
 
Регистрация: 28.08.2017
Сообщений: 30

Да и цикл перестает работаеть если 1ый или 3ий элемент цифра "0"
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2017, 19:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Vardges,
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2017, 20:01
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Аналогичное лицо когда искал в коде условную конструкцию switch
Ответить с цитированием
  #5 (permalink)  
Старый 08.09.2017, 20:09
Аспирант
Отправить личное сообщение для Vardges Посмотреть профиль Найти все сообщения от Vardges
 
Регистрация: 28.08.2017
Сообщений: 30

Ох извените видимо я не правильно сконструировал свои мысли, простите чайника. цифры просто должны меняться местами.
Пример
var x=2;
var y=4;
var z=x;
x=y;
y=z;
Ответить с цитированием
  #6 (permalink)  
Старый 08.09.2017, 20:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Vardges,
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    body{
    display:flex;
      flex-wrap:wrap;
      justify-content: center;
      width: 50%;
    }
    div{
      width: 100px;
      height: 100px;
      border:1px solid;
      font-size: 24px
    }
  </style>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
<script>
var elem=document.querySelectorAll('div');
for (var i=0;i<elem.length;i++){
  elem[i].addEventListener('click',F)
}
  var a=[];
function F(){
  if(this.innerHTML!=""){
    return false
  }
  var x=parseInt(Math.random(1)*9);
  this.innerHTML = x;
  a.unshift(this);
  if(a.length == 3) {
   var t = a[2].innerHTML;
       a[2].innerHTML = a[1].innerHTML;
       a[1].innerHTML = t;
       a.length = 2;
  }
  console.log(a)
}



</script>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 08.09.2017, 20:51
Аспирант
Отправить личное сообщение для Vardges Посмотреть профиль Найти все сообщения от Vardges
 
Регистрация: 28.08.2017
Сообщений: 30

a.unshift(this);

а что делает эта команда?unshift это добавить в массив, а (this)?
Ответить с цитированием
  #8 (permalink)  
Старый 08.09.2017, 21:01
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от Vardges Посмотреть сообщение
a.unshift(this);

а что делает эта команда?unshift это добавить в массив, а (this)?
Это элемент дом дерева.
всегда можете посмотреть, поместив рядом такой код
console.log(this);
Ответить с цитированием
  #9 (permalink)  
Старый 08.09.2017, 21:07
Аспирант
Отправить личное сообщение для Vardges Посмотреть профиль Найти все сообщения от Vardges
 
Регистрация: 28.08.2017
Сообщений: 30

Я стесняюсь даже спросить что такое дом дерево.
Ответить с цитированием
  #10 (permalink)  
Старый 08.09.2017, 21:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Vardges
а что делает эта команда?unshift это добавить в массив, а (this)?
добавить в начало массива, элемент по которому кликннули
https://learn.javascript.ru/array#м...-shift-unshift

Последний раз редактировалось рони, 08.09.2017 в 21:24.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов rjabijj Общие вопросы Javascript 6 06.07.2012 21:34
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов. Drimmer Серверные языки и технологии 0 02.07.2012 18:22
Обработка изображения до его отображения на странице после аякс запроса балерун Общие вопросы Javascript 1 30.05.2012 17:20
Есть ли какой Java Script который меняет название сайта после его открытия Xaiver Общие вопросы Javascript 1 10.01.2012 02:50
Как получить размер блока сразу после изменения его содержимого? Cooskon Events/DOM/Window 6 17.09.2010 16:15