Задать вопрос

Как JS проверить на пустоту или создание объекта?

Всем привет. не работает код: почему???
Во время загрузки страницы, в переменную "a" может быть добавлен текст, а может и нет. Вот эту переменную и надо проверить. Сделал так:

Всем привет.

Есть код:

Во время  загрузки страницы элемент может быть создан,  а может не  быть. Значение элемента беру через document.queryselector.

	var a = document.querySelector("#******").innerText;
	if(typeof a === "undefined"){
		document.querySelector("#******").value="123";
	}


Пробовал:

Если вы проверяете пустую строку:

if(myVar === ''){ // do stuff };
Если вы проверяете переменную, которая была объявлена, но не определена:

if(myVar === null){ // do stuff };
Если вы проверяете переменную, которая не может быть определена:

if(myVar === undefined){ // do stuff };
Если вы проверяете оба значения, то есть любая переменная имеет значение null или undefined:

if(myVar == null){ // do stuff };


Т.е. если в переменной ничего нет, то добавить значение в поле. То, что под **** корректно выполняется, а вот условие проверки НЕТ. ((( Использовал различные варианты, почему-то не работает. Что делаю не так??? СПАСИБО
  • Вопрос задан
  • 614 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
элемент же может и отсутствовать?

Тогда document.querySelector("#******") вернёт undefined, и попытка получить из него свойство innerText выкинет ошибку. Загляните в консоль.

Наверное, нужно проверять два условия: чтобы и элемент нашёлся, и чтобы текст в нём оказался не пустой строкой.

Что-то типа
const el = document.querySelector("#******");
if (el) {
  const a = el.innerText;
  if (a.length === 0) {
    el.value = "123"; // а что это за элемент, у которого и innerText и value ?
  }
}
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если элемент не создан, то есть отсутствует в DOM, то querySelector вернёт null и следующее обращение к innerText выдаст ошибку
document.querySelector('#abc').innerText
//  Uncaught TypeError: document.querySelector(...) is null

Вариантов два.
Первый - проверять, что вернул querySelector и потом запрашивать innerText
const el = document.querySelector('#abc');
const text = el === null ? 'default Text' : el.innerText;

Второй - использовать optional chaining и null coalescing
const text = document.querySelector('#abc')?.innerText ?? 'default Text';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы