Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.01.2017, 11:18
Аватар для komplekt_17
Аспирант
Отправить личное сообщение для komplekt_17 Посмотреть профиль Найти все сообщения от komplekt_17
 
Регистрация: 14.01.2017
Сообщений: 46

Как избежать ошибки со split()
Здравствуйте, есть код:
var nameUser = '';
// циклируем пока кнопка "отмена" НЕ нажата
while(nameUser != null){
	nameUser = prompt("Введите ваше Имя и Фамилию через пробел").split(' ');
	if(nameUser[1] !== undefined){
		var param1 = nameUser[0];
		var param2 = nameUser[1];
		var param3 = getDateNow();
		var newObject = new User(param1,param2,param3);
		new UserList().add(newObject);
	}
	else{
		alert("Между Имя и Фамилия должен быть пробел");
	}
}
new UserList().getAllUsers;

После нажатия кнопки отмена выходит ошибка
"Uncaught TypeError: Cannot read property 'split' of null", Как написать код, чтобы если nameUser == null, то сплитование уже не происходило бы?
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2017, 12:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

var v;
if(v = prompt('Text')) {
    alert(v.split(' '))
} else alert('Cansel')
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2017, 13:28
Аватар для komplekt_17
Аспирант
Отправить личное сообщение для komplekt_17 Посмотреть профиль Найти все сообщения от komplekt_17
 
Регистрация: 14.01.2017
Сообщений: 46

решил так:
while(eUser != null){
	eUser = prompt("Введите ваше Имя и Фамилию через пробел","");
	if(eUser != null){
		var nameUser = eUser.split(' ');
		if(nameUser[1] !== undefined){
			var param1 = nameUser[0];
			var param2 = nameUser[1];
			var param3 = getDateNow();
			var newObject = new User(param1,param2,param3);
			var twoObj = new UserList();
			twoObj.add(newObject);
		}
		else{
			alert("Между Имя и Фамилия должен быть пробел");
		}
	}
	else{
		new UserList().getAllUsers();
	}
}
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2017, 14:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Зачем? Куда больше пользы было бы, если бы к простому да еще добавить trim().
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2017, 14:26
Аватар для komplekt_17
Аспирант
Отправить личное сообщение для komplekt_17 Посмотреть профиль Найти все сообщения от komplekt_17
 
Регистрация: 14.01.2017
Сообщений: 46

а зачем trim(), он же обрезает пробелы. А по условию задачи prompt() должен принимать Имя Фамилию через пробел, а в объекте потом должен храниться как Имя отдельно, фамилия отдельно. Или я вопроса вашего не понял
Ответить с цитированием
  #6 (permalink)  
Старый 22.01.2017, 14:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от komplekt_17
а зачем trim(), он же обрезает пробелы
А такой ввод "много пробелов" тоже сгодится?

А нормальные пацаны получают структурированные данные отдельными полями формы, ибо так легче контролировать и ввод, и проверять условия.

Последний раз редактировалось laimas, 22.01.2017 в 14:42.
Ответить с цитированием
  #7 (permalink)  
Старый 22.01.2017, 14:37
Аватар для komplekt_17
Аспирант
Отправить личное сообщение для komplekt_17 Посмотреть профиль Найти все сообщения от komplekt_17
 
Регистрация: 14.01.2017
Сообщений: 46

Сообщение от laimas Посмотреть сообщение
ибо так легче контролировать и ввод, и проверять условия.
Сложно не согласиться
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создается function Function(){} ? Cepairda Общие вопросы Javascript 0 10.02.2016 15:03
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Ошибка без ошибки. Не работает метод split Artyom Общие вопросы Javascript 3 15.08.2013 20:28
Переполнен стек. Как избежать? koeshiro Общие вопросы Javascript 8 03.06.2013 09:14
Как сделать как в JQ? faforty Общие вопросы Javascript 8 14.11.2011 01:35