Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.08.2017, 22:29
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Добавил touchend и всё равно не работает

var listCity = document.querySelector(".styled-select");
			var showListCity = document.querySelector(".chooce-option");
			var cityValue = document.querySelector(".chooce-value");
			
			var select = document.querySelector(".list-city");
			var options = select.querySelectorAll("li");
	
	
		showListCity.addEventListener("touchstart", function(e){
			if(listCity.style.display != 'block') {
				listCity.style.display = 'block';
			}
			
			else {
				listCity.style.display = 'none';
			}
			
			options.forEach(function(item, i, arr) {
				options[i].addEventListener('touchstart', function(t){
					t.target.addEventListener('touchend', function(){
						console.log(t.target.getAttribute("data-value"))
						showListCity.value = t.target.innerHTML;
						cityValue.value = t.target.getAttribute("data-value");
						console.log(cityValue.value)
						listCity.style.display = 'none';
					})
					
				})
			});
		})
Ответить с цитированием
  #12 (permalink)  
Старый 10.08.2017, 23:32
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

спасите
Ответить с цитированием
  #13 (permalink)  
Старый 11.08.2017, 01:12
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

DivMan,
посмотрел код
Сообщение от DivMan
если несколько раз что-то выбрать, то консоль сильно захламляется
я уже писал + всплытие события
Сообщение от DivMan
Изменил на touchstart
зачем, если меню открывается, значит click работает, дурень

Последний раз редактировалось Rise, 11.08.2017 в 01:23.
Ответить с цитированием
  #14 (permalink)  
Старый 11.08.2017, 07:08
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Почему-то на открытие меню работает, но не закрывается, и консоль уже не захламляется, я вынес тоо код
Ответить с цитированием
  #15 (permalink)  
Старый 11.08.2017, 09:02
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

DivMan,
Метод NodeList.forEach() относительно новый, возможно твой мобильный браузер его не поддерживает. Ошибки можно ловить так:
try {
	var listCity = document.querySelector(".styled-select");
	var showListCity = document.querySelector(".chooce-option");
	var cityValue = document.querySelector(".chooce-value");
	var options = document.querySelectorAll("li");
	
	showListCity.addEventListener("click", function (e) {
		try {
			if (listCity.style.display != 'block') {
				listCity.style.display = 'block';
			} else {
				listCity.style.display = 'none';
			}
		} catch (e) {
			alert(e.name + ': ' + e.message + '\n' + e.stack);
		}
	})
	
	options.forEach(function (item, i, arr) {
		options[i].addEventListener('click', function (t) {
			try {
				console.log(t.target.getAttribute("data-value"))
				showListCity.value = t.target.innerHTML;
				cityValue.value = t.target.getAttribute("data-value");
				console.log(cityValue.value)
				listCity.style.display = 'none';
			} catch (e) {
				alert(e.name + ': ' + e.message + '\n' + e.stack);
			}
		})
	});
} catch (e) {
	alert(e.name + ': ' + e.message + '\n' + e.stack);
}

Три try потому что https://learn.javascript.ru/exception:
Цитата:
try..catch работает только в синхронном коде

Последний раз редактировалось Rise, 11.08.2017 в 09:11.
Ответить с цитированием
  #16 (permalink)  
Старый 12.08.2017, 03:44
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

DivMan,
Чтобы всё в одном месте было для удобства редактирования можно в функцию вынести:
try {
    // ...
} catch (e) {
    caught(e);
}

function caught(error) {
    alert(error.name + ': ' + error.message + '\n' + error.stack);
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стилизация option mrship Элементы интерфейса 4 10.12.2016 20:28
Добавить скриптом классы на option Quark_ Общие вопросы Javascript 7 11.07.2016 12:13
Новый input при выборе определенного option SLameN Элементы интерфейса 4 03.07.2015 16:29
Изменение selecta при выборе option ainur777 Общие вопросы Javascript 1 10.01.2015 16:23
Как заставить меняться стиль option одного селекта в зависимости от выбора option.. print_r Общие вопросы Javascript 1 08.01.2013 23:11