Как проверить определена ли переменная на JavaScript

Раздел языка JavaScript.
Аватара пользователя
Slash
Администратор
Сообщения: 2112
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Как проверить определена ли переменная на JavaScript

Сообщение Slash » Вт ноя 10, 2015 8:47 pm

Здравствуйте. Начну из далека :)
Сегодня мне потребовалось вывести диалоговое окно при нажатии кнопки, на JS (парсер BBcode). Диалоговое окно состоит из одного поля, куда вводится строка и двух кнопок Ok и Отмена. Это окно я хочу использовать для ввода url, пользователь нажимает BBcode URL, появляется окно, пользователь вводит адрес, затем жмет кнопку Ok, и введенный адрес появляется в textarea, уже с BBcode. Я посчитал, что это будет удобно.

Код: Выделить всё

// Назначили переменной "url" введенный адрес
var url = prompt(paste_url, '');
// Вставляем BBcode вместе с URL в textarea
obj.value = value.substr(0, start) + '[' + tag + '=' + url + ']' + url + '[/' + tag + ']' + value.substr(start);
Все просто и удобно!
Но тут я подумал о том, что пользователь может передумать вводить какой то адрес, после того, как нажмет на кнопку (кто та может так быстро передумать?), но теперь ему придется нажать на одну из двух кнопок (Ok или Отмена), что бы продолжить работу в редакторе, после чего в textarea будет вставлен BBcode, не важно было, что то введено или нет. Выглядит это конечно некрасиво и на мой взгляд недопустимо. Тут нужна проверка - было ли что то введено в поле или нет, то есть надо проверить переменную на пустоту.

Я знаю несколько способов, как проверить определена ли переменная на JavaScript, правда не все пробовал.
И так я делаю проверку на пустоту переменной, если переменная не пустая, сценарий вставит тег в textarea вместе с введенным адресом. Первое, что я попробовал выглядело так:

Код: Выделить всё

if (url != '')
Теперь если поле осталось не заполненным, а кнопка Ok была нажата, то в textarea ничего не попадает, но если нажать кнопку Отмена, BBcode все ровно попадает в поле редактора текста, со значением null. А это говорит о том, что данная проверка мне не подходит. Пробую ещё:

Код: Выделить всё

if (url != undefined)
И этот вариант меня не устраивает, по той же причине, что и первый.
Что первые два варианта мне не подошли - это даже хорошо, потому что я решил вставить в условие просто переменную, без всяких сравнений:

Код: Выделить всё

if (url)
Именно такая проверка прошла мою проверку (тавтольгнул)! Теперь при пустой форме и нажатой, любой кнопки в textarea ни чего не вставляется, что мне и надо. Но я придирчив до ужаса (наверно) и решил попробовать ввести в поле пробел и бац в textarea попадает тег. Тут придется убирать пробелы, нашел такое решение:

Код: Выделить всё

url = url.replace(/\s+/g, '');
После этой замены хоть сто пробелов ставь, работает, как часики!
В итоге код получился таким:

Код: Выделить всё

// Назначили переменной "url" введенный адрес
var url = prompt(paste_url, '');
// Удаляем пробелы, если они есть
url = url.replace(/\s+/g, '');
// Проверяем определена ли переменная, если определена, вставляем тег
if (url)
{
    // Вставляем BBcode вместе с URL в textarea
    obj.value = value.substr(0, start) + '[' + tag + '=' + url + ']' + url + '[/' + tag + ']' + value.substr(start);
}
Конечно данный сценарий ещё допиливать и допиливать, например можно проверить корректность введенного адреса, не запрещен ли введенный адрес и так далее, но тема не об этом.

Надеюсь информация была полезной.
Спасибо за внимание.

Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2112
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Re: Как проверить определена ли переменная на JavaScript

Сообщение Slash » Пт июн 17, 2016 3:07 pm

Ещё один вариант проверки определена ли переменная:

Код: Выделить всё

if (typeof value !== 'undefined') {
    // Переменная определена
}; 

Ответить Пред. темаСлед. тема

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость