Не могу видеть видимость стиля узла DOM через Javascript

#javascript #html #css

#javascript #HTML #css

Вопрос:

Мне нужна некоторая логика в моем Javascript, чтобы родительский узел узла, в котором было обнаружено событие, исчез. Если быть точным, родительский узел представляет собой ссылку в формате PDF, и как он, так и его дочерний узел (изображение bmp) должны быть невидимыми, если дочерний узел не загружается. Вот что я описал в качестве своей функции прослушивания событий:

 window.addEventListener('error', function(event) {
    console.log(event);
    if (event.target.id == "sheetBmp"){
        console.log("sheet bmp failed to load");
        //make the pdf disappear also
        e.target.parentNode.style.visibility=false;
        console.log("pdf nodeshould disappear");
    }
}, true);
  

и вот стиль:

     <a id=sheetPdf target='_blank'>
        <img id="sheetBmp" onLoad="this.style.visibility='visible'" onError="this.style.visibility='hidden'">
        </img>
    </a>
  

Обратите внимание, что я запустил его через отладчик, и после выполнения e.target.parentNode.style.visibility=false; строки свойство остается неизменным (пустые кавычки), а видимость узла остается видимой на веб-странице. Любая помощь приветствуется

Ответ №1:

Вы устанавливаете недопустимое значение ( false ) для свойства, поэтому браузер его отбрасывает.

Допустимые значения для свойства видимости включают "visible" и "hidden" .

Комментарии:

1. Спасибо, это было намного проще, чем я ожидал

2. Это правильно. Кроме того, OP, вероятно visibility , на самом деле вообще не нужен, поскольку это оставило бы элементы в макете, но не видимыми. Вероятно, ОП хочет display: none .

3. @rockerest Также большое спасибо за ссылку на это свойство, я предпочитаю этот способ, потому что теперь элемент не оставляет пустого пробела после выдачи ошибки. Спасибо за отличные предложения!