Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Cтранное поведение (https://javascript.ru/forum/project/72315-ctrannoe-povedenie.html)

Георгий777 21.01.2018 13:27

Cтранное поведение
 
Здравствуйте, подскажите, пожалуйста, почему в коде по ссылке ниже

https://jsfiddle.net/85uL4hq4/

в 8й строчке скрипта - span.style.opacity = 0 - выдается ошибка:

scripts.js:8 Uncaught TypeError: Cannot set property 'opacity' of undefined
at scripts.js:8

рони 21.01.2018 13:59

Георгий777,
используйте обычный for и будет вам счастье

Георгий777 21.01.2018 14:13

да, спасибо большое, но все-таки странно, что так не работает)

рони 21.01.2018 14:24

Георгий777,
вы перечислили все свойства обьекта, в том числе длину, у длины нет свойства style

Георгий777 21.01.2018 14:54

А подскажите, пожалуйста, почему не выводится содержимое массива ar
по этой же ссылке в скрите на 28й строчке во втором цикле for при попытке вывести в консоль

https://jsfiddle.net/85uL4hq4/1/

рони 21.01.2018 15:08

Георгий777,
строка 4 arLength = 0 , поэтому нет никакого цикла в строке 24

рони 21.01.2018 15:08

Георгий777,
что хотите сделать?

Георгий777 21.01.2018 15:33

В строке 21 в массив записывается 2 элемента , которые выводятся , если на 23й строке прописать console.log(ar);

А в целом хочу, кликая на любых двух ячейках,если значение их равны, то оставляю эти значения на экране, иначе вновь скрываю их

Георгий777 21.01.2018 15:58

в чем тут может быть дело?

рони 21.01.2018 18:44

игра открыть пару
 
Георгий777,

<!DOCTYPE html>
<html lang="ru">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
        <title>Grid</title>
        <style type="text/css">
.output {
  display:flex;
  flex-wrap: wrap;
  justify-content: center;
  width: 603px;
  margin: 50px auto;
}

.inner {
  display: flex;
  flex-basis: 150px;
  height: 80px;
  background: #ccc;
  border: 1px solid gray;
  text-align: center;
  line-height: 80px;
}

.inner:hover {
  cursor: pointer;
}

.inner span {
   font-size: 48px;
  opacity: 0;
  width: 100%;
  height: 100%;
  transition: 1s;
}

.inner.ok span {
  transition: .4s;
  opacity: 1;
}



        </style>
    </head>
    <body>
        <div class="output">
      <div class="inner"><span>1</span></div>
      <div class="inner"><span>3</span></div>
      <div class="inner"><span>9</span></div>
      <div class="inner"><span>5</span></div>
      <div class="inner"><span>4</span></div>
      <div class="inner"><span>1</span></div>
      <div class="inner"><span>3</span></div>
      <div class="inner"><span>8</span></div>
      <div class="inner"><span>9</span></div>
      <div class="inner"><span>5</span></div>
      <div class="inner"><span>4</span></div>
      <div class="inner"><span>8</span></div>
    </div>
<script>
var ar = [], timer, duration = 1000;
[].forEach.call(document.querySelectorAll(".inner"), function(item) {
  item.addEventListener("click", function() {
    if (item.classList.contains("ok")) {
      return;
    }
    window.clearTimeout(timer);
    item.classList.add("ok");
    ar.push(item);
    if (ar.length == 2) {
      if (ar[0].textContent == ar[1].textContent) {
        ar = [];
      } else {
        ar[0].classList.remove("ok");
        ar = [item];
      }
    }
if(ar.length)  timer = window.setTimeout(function() {
      ar[0].classList.remove("ok");
      ar = [];
    }, duration);
  });
});
</script>
    </body>
</html>


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