Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 06.04.2020, 01:06
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

Сообщение от рони Посмотреть сообщение
Pavel_16
что за хрень в консоли,ошибка

{ userName: null, time: null }
jQuery.Deferred exception: Unexpected token o in JSON at position 1 SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at HTMLDocument.<anonymous> ([url]https://fd2projectcoloring--pavelmishyn.repl.co/userHandler.js:18:17[/url])
    at mightThrow ([url]https://fe.it-academy.by/JQ/jquery.js:3570:29[/url])
    at process ([url]https://fe.it-academy.by/JQ/jquery.js:3638:12[/url]) undefined
Script error.
Ответить с цитированием
  #22 (permalink)  
Старый 06.04.2020, 01:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Pavel_16,
страница приветствия.
<!DOCTYPE html>
<html>
<head>
  <title>страница приветствия</title>
  <meta charset="utf-8">
<script>
document.addEventListener("DOMContentLoaded", function() {
    let user = localStorage.getItem("userName");
    let title = user ? `Привет ${user}!` : `Введите своё имя.`;
    let h1 = document.querySelector("h1");
    h1.textContent = title;
    let newname = document.querySelector("[name='newname']");
    newname.hidden = !user;
    let username = document.querySelector("[name='username']");
    username.hidden = user;
    user && (username.value = user);
    let form = document.querySelector("form");
    form.addEventListener("click", event => {
        let {target} = event;
        let txt = username.value.trim();
        if (target == newname) {
            localStorage.removeItem('userName');
            form.action = ""
        } else if (txt) {
            localStorage.setItem("userName", txt);
            form.action = "https://javascript.ru/forum/"//переход на страницу игры
        } else event.preventDefault()
    })
});
</script>
</head>
<body>
<h1></h1>
<form action="http://" >
<input name="username" hidden="hidden" required="required">
<input name="newname" type="submit" value="Новый игрок" hidden="hidden">
<input name="next" type="submit" value="Далее">
</form>

</body>
</html>
Ответить с цитированием
  #23 (permalink)  
Старый 06.04.2020, 12:45
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

спасибо!
Ответить с цитированием
  #24 (permalink)  
Старый 06.04.2020, 12:53
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

Рони - что-то не так пошло!!,,,,,???

По итогу:
приветствие
document.addEventListener("DOMContentLoaded", function () {
  let user = localStorage.getItem("userName");
  let title = user ? `Привет ${user}!` : `Введите своё имя.`;
  let h1 = document.querySelector("h1");
  h1.textContent = title;
  let newname = document.querySelector("[name='newname']");
  newname.hidden = !user;
  let username = document.querySelector("[name='username']");
  username.hidden = user;
  user && (username.value = user);
  let form = document.querySelector("form");
  form.addEventListener("click", event => {
    let { target } = event;
    let txt = username.value.trim();
    if (target == newname) {
      localStorage.removeItem('userName');
      form.action = ""
    } else if (txt) {
      localStorage.setItem("userName", txt);
      form.action = 'play.html'//переход на страницу игры
    } else event.preventDefault()
  })
});


игра -тут проблема вылетили карандаши......
"use strict";

//Работа с цветам
const colors = [
  { color: '#ff0000', image: 'Pic/pencil_red.png' },
  { color: '#ffa500', image: 'Pic/pencil_orange.png' },
  { color: '#ffff00', image: 'Pic/pencil_yellow.png' },
  { color: '#008000', image: 'Pic/pencil_green.png' },
  { color: '#0000ff', image: 'Pic/pencil_blue.png' },
  { color: '#00008b', image: 'Pic/pencil_dark_blue.png' },
  { color: '#800080', image: 'Pic/pencil_purple.png' },
];
function renderColorPalette() {
  const paletteContainer = document.querySelector(".palette");
  const colorsItems = colors
    .map(n => `
    <button
      style="background-image: url(${n.image})"
      class="palette-button"
      data-color="${n.color}"
    ></button>`)
    .join('');
  paletteContainer.innerHTML = colorsItems;
}
function handleClickOnColor(event) {
  const button = event.target.closest(".palette-button");
  if (!button) return;
  const oldActiveButton = document.querySelector(".palette-button-active");
  if (oldActiveButton) {
    oldActiveButton.classList.remove("palette-button-active");
  }
  button.classList.add("palette-button-active");
}
function setEventsOnFilledElements() {
  function handleMouseEnter() {
    this.classList.add("selected");
  }
  function handleMouseLeave() {
    this.classList.remove("selected");
  }
  const elements = document.querySelectorAll("*[fill]");
  function handleClick() {
    const currentColor = document.querySelector(".palette-button-active");
    if (!currentColor) {
      alert("Цвет не выбран");
      return;
    }
    const save = { elem: this, color: this.getAttribute("fill") };
    stateStack.push(save);
    this.setAttribute("fill", currentColor.dataset.color);
    if ([...elements].every(ep => ep.getAttribute('fill') != '#ffffff')) {
      tick();
      let time = document.getElementById('play_timer').innerHTML;
      localStorage.setItem("time ", time);
      setTimeout(() => alert('Вы всё закрасили!'));
      * location.href = "/rekord.html";
    }
  }
  elements.forEach(element => {
    element.addEventListener("mouseenter", handleMouseEnter);
    element.addEventListener("mouseleave", handleMouseLeave);
    element.addEventListener("click", handleClick);
  });
}
document.addEventListener("DOMContentLoaded", renderColorPalette);
document.addEventListener("click", handleClickOnColor);
document.addEventListener("DOMContentLoaded", setEventsOnFilledElements);
function check() {
  const { length } = [...document.querySelectorAll("*[fill]")].filter(ep => ep.getAttribute('fill') == '#ffffff');
  const txt = length ? `Ещё ${length} фигур не закрашено` : 'Вы всё закрасили!'
  alert(txt)
}
const stateStack = []
function rev() {
  if (stateStack.length) {
    const { elem, color } = stateStack.pop();
    elem.setAttribute("fill", color)
  }
}


есть еще вот это
"use strict";

$(document).ready(function () {

  if (localStorage.getItem("users") === null) {
    localStorage.setItem("users", JSON.stringify([]));
  }

  let users = JSON.parse(localStorage.getItem("users"));
  let userName = localStorage.getItem("userName");
  let time = localStorage.getItem("time")
  users.push({ userName, time });
  localStorage.setItem("users", JSON.stringify(users));
  for (const item of users) console.log(item);

  var $select = $('#name');
  $select.ready(function (event) {
    $.each(JSON.parse(users), function (key, value) {
      $('<option>').val(value.name).text(value.name).appendTo($select);
    });
  });

  $('#play_game').click(function () {
    let userName = document.getElementById('new_name').value;
    localStorage.setItem("userName", userName)
    users = JSON.parse(users);
    users.push(newUser);
    console.log(users);
    localStorage.setItem("users", JSON.stringify(users));
  });
});

Рони, я тебе что-бы проще было, в личку полностью файл(ссылку), если не против, там картинки и лого, не могу сдесь выложить Прошу прощения форумчане.
Ответить с цитированием
  #25 (permalink)  
Старый 06.04.2020, 22:50
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

form.addEventListener("click", event => {
    let { target } = event;
    let txt = username.value.trim();
    if (target == newname) {
      localStorage.removeItem('userName');
      form.action = ""
    } else if (txt) {
      localStorage.setItem("userName", txt);
      form.action = 'play.html'//переход на страницу игры
    } else event.preventDefault()
  })
});

Вот здесь проблема - нужно что-бы перерисовывало страницу, а оно выкидывает на главную...

Последний раз редактировалось Pavel_16, 06.04.2020 в 23:04.
Ответить с цитированием
  #26 (permalink)  
Старый 06.04.2020, 23:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Pavel_16,
заменить на
event.preventDefault();
     window.location.reload();
Ответить с цитированием
  #27 (permalink)  
Старый 06.04.2020, 23:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Pavel_16,
пример выделения кода
*!*
строка или
строки кода
*/!*

form.addEventListener("click", event => {
    let { target } = event;
    let txt = username.value.trim();
    if (target == newname) {
      localStorage.removeItem('userName');
   *!*   
      event.preventDefault();
      window.location.reload(); 
   */!*
    } else if (txt) {
      localStorage.setItem("userName", txt);
      form.action = 'play.html'//переход на страницу игры
    } else event.preventDefault()
  })
});
Ответить с цитированием
  #28 (permalink)  
Старый 06.04.2020, 23:24
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

Сообщение от рони Посмотреть сообщение
Pavel_16,
пример выделения кода
*!*
строка или
строки кода
*/!*

form.addEventListener("click", event => {
    let { target } = event;
    let txt = username.value.trim();
    if (target == newname) {
      localStorage.removeItem('userName');
   *!*   
      event.preventDefault();
      window.location.reload(); 
   */!*
    } else if (txt) {
      localStorage.setItem("userName", txt);
      form.action = 'play.html'//переход на страницу игры
    } else event.preventDefault()
  })
});
Получается когда есть имя уже, нажимаешь ,,новый игрок"- оно выкидывает все равно на главную страницу, а по нормальному должно в этом окне оставаться, просто появится вместо имени поле для ввода.?!

Может в DOM не правильно сделано?
<h1></h1>
                  <form action="play.html" >
                  <input name="username" hidden="hidden" required="required" pattern="^[a-zA-Z]+$" placeholder="Имя на латинице!">
                  <input name="newname" type="submit" value="Новый игрок" hidden="hidden" placeholder="Имя на латинице!" pattern="^[a-zA-Z]+$">
                  <input name="next" type="submit" value="Продолжить">
                  </form>

Последний раз редактировалось Pavel_16, 06.04.2020 в 23:30.
Ответить с цитированием
  #29 (permalink)  
Старый 06.04.2020, 23:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Pavel_16,
if (target == newname) {
            event.preventDefault();
            localStorage.removeItem('userName');
            h1.textContent = `Введите своё имя.`;
            newname.hidden = true;
            username.value = "";
            username.hidden = false;
        }
Ответить с цитированием
  #30 (permalink)  
Старый 06.04.2020, 23:35
Аспирант
Отправить личное сообщение для Pavel_16 Посмотреть профиль Найти все сообщения от Pavel_16
 
Регистрация: 01.04.2020
Сообщений: 46

Сообщение от рони Посмотреть сообщение
Pavel_16,
if (target == newname) {
            event.preventDefault();
            localStorage.removeItem('userName');
            h1.textContent = `Введите своё имя.`;
            newname.hidden = true;
            username.value = "";
            username.hidden = false;
        }
Ну в принципе так и наверное лучше, каждый раз выбирать, если уже вводил имя!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обновить часть страницы через js или ajax или jquery? bridun Общие вопросы Javascript 1 08.08.2019 14:21
Как сделать чтоб функция выволнялась по click один раз или просто выполнялась? TaH4uk.pro jQuery 1 06.12.2012 22:41
Восторг в античной ForYourself ювелирные изделия тибетской или дать как подарок whistle123 Events/DOM/Window 0 03.12.2012 10:09
Как узнать, присутствует ли в окне полоса прокрутки или нет? возжаждавший Элементы интерфейса 6 12.03.2010 23:00
30(1|2) редирект от сервера. Или как лучше сделать редирект при верной отсылке форма. pizzZ AJAX и COMET 2 18.02.2010 09:06