Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как избежать ошибки со split() (https://javascript.ru/forum/misc/66995-kak-izbezhat-oshibki-so-split.html)

komplekt_17 22.01.2017 11:18

Как избежать ошибки со 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, то сплитование уже не происходило бы?

laimas 22.01.2017 12:08

var v;
if(v = prompt('Text')) {
    alert(v.split(' '))
} else alert('Cansel')

komplekt_17 22.01.2017 13:28

решил так:
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();
	}
}

laimas 22.01.2017 14:12

Зачем? Куда больше пользы было бы, если бы к простому да еще добавить trim().

komplekt_17 22.01.2017 14:26

а зачем trim(), он же обрезает пробелы. А по условию задачи prompt() должен принимать Имя Фамилию через пробел, а в объекте потом должен храниться как Имя отдельно, фамилия отдельно. Или я вопроса вашего не понял

laimas 22.01.2017 14:33

Цитата:

Сообщение от komplekt_17
а зачем trim(), он же обрезает пробелы

А такой ввод "много пробелов" тоже сгодится?

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

komplekt_17 22.01.2017 14:37

Цитата:

Сообщение от laimas (Сообщение 441906)
ибо так легче контролировать и ввод, и проверять условия.

Сложно не согласиться


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