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);
Я проверил вашу скрипку, но 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])
дефисы-
"), подчеркивает ("_
"), двоеточия (":
") и периоды (".
").