Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   switch значений после 3-его клика (https://javascript.ru/forum/misc/70489-switch-znachenijj-posle-3-ego-klika.html)

Vardges 08.09.2017 19:49

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:52

Да и цикл перестает работаеть если 1ый или 3ий элемент цифра "0"

рони 08.09.2017 19:58

Vardges,
:-?

Rasy 08.09.2017 20:01

Аналогичное лицо когда искал в коде условную конструкцию switch

Vardges 08.09.2017 20:09

Ох извените видимо я не правильно сконструировал свои мысли, простите чайника. цифры просто должны меняться местами.
Пример
var x=2;
var y=4;
var z=x;
x=y;
y=z;

рони 08.09.2017 20:21

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>

Vardges 08.09.2017 20:51

a.unshift(this);

а что делает эта команда?unshift это добавить в массив, а (this)?

j0hnik 08.09.2017 21:01

Цитата:

Сообщение от Vardges (Сообщение 464128)
a.unshift(this);

а что делает эта команда?unshift это добавить в массив, а (this)?

Это элемент дом дерева.
всегда можете посмотреть, поместив рядом такой код
console.log(this);

Vardges 08.09.2017 21:07

Я стесняюсь даже спросить что такое дом дерево.

рони 08.09.2017 21:21

Цитата:

Сообщение от Vardges
а что делает эта команда?unshift это добавить в массив, а (this)?

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


Часовой пояс GMT +3, время: 01:07.