Javascript не может показать / скрыть элемент Dom (на примере Pannellum)

У меня проблема, когда я пытаюсь скрыть / показать элемент в DOM с помощью вызова javascript document.getElementById(elemId).style.visibility = visible/hidden.

Это очень странное поведение, когда я получаю элемент DOM по идентификатору и устанавливаю видимость видимым, в консоли я вижу, что встроенный стиль был изменен, но элемент на экране все еще скрыт.

Я привожу пример моей проблемы, надеюсь, кто-то может помочь

Это функция, которую я использую, чтобы скрыть / показать элементы DOM

function updateHTML(elmId, value) {
  var elem = document.getElementById(elmId);
  if (typeof elem !== 'undefined' && elem !== null) {
    document.getElementById(elmId).style.visibility = value;
    console.log(elem);
  }
}

Во всяком случае даже прямой звонок document.getElementById('2').style.visibility = 'visible' не работает

PS Чего я пытаюсь добиться, так это показать интервал над восклицательным знаком, который по умолчанию для css скрыт

Скрипка Демо

2 ответа

Решение

Когда вы звоните updateHtml элемент еще не был создан.

Для тестирования добавили updateHtml внутри тайм-аута через 1 с, и это работает.

setTimeout(() => updateHTML("8", "visible"), 1000);

демоверсия jsfiddle

Я проверил вашу скрипку, но id что вы упомянули следующий код не существует:

updateHTML("8", "visible");

В свою функцию обновления вы делаете это...

function updateHTML(elmId, value) {
  var elem = document.getElementById(elmId); // <- this line
  if (typeof elem !== 'undefined' && elem !== null) {
    document.getElementById(elmId).style.visibility = value;
    console.log(elem);
  }
}

Но вы получаете идентификатор несуществующего элемента.

Другие вещи:

Идентификаторы и токены должны начинаться с буквы ([A-Za-z]) и может сопровождаться любым количеством букв, цифр ([0-9])дефисы-"), подчеркивает ("_"), двоеточия (":") и периоды (".").

Другие вопросы по тегам