2014-12-12 2 views
0

Я пытаюсь написать функцию javascript, которая заставляет элемент иметь стиль display = block. В настоящее время он установлен для отображения = none другим фрагментом javascript.Javascript window.onload not firing

Я думал, что window.onload решит проблему, так как код не будет переопределен предыдущим JS. Приведенный ниже код использовался, и теперь функция просто не срабатывает.

Может кто-нибудь помочь?

  window.onload = function() // It sets the class of the unordered list when the page has been loaded. 
      { 
       ul.style.display = "block!important"; // Display all the child items 
      } 
+0

Почему бы не сделать это с помощью CSS? – Gnucki

+0

Примечание: вы не должны использовать 'element.onevent = callback;', а 'element.addEventListener (событие, обратный вызов)'. Проблема с 'element.onevent = callback;' она может быть перезаписана другим кодом. Особенно 'window.onload = callback' - очень плохая идея. –

+0

Я не мог сделать это с помощью css, поскольку он был перезаписан другим JS. Вот почему я хотел применить свой JS после того, как все загрузилось. –

ответ

1

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

document.addEventListener("DOMContentLoaded", function(event) { 
    var ul = document.getElementById("my-ul"); 

    ul.style.display = "block!important"; 
}); 

Вы можете сделать это с JQuery, если вы хотите получить более перекрестное решение браузера:

$(document).ready(function() { 
    $('#my-ul').css('display', 'block!important'); 
}); 

Вы можете сделать это в CSS:

#my-ul { 
    display: block!important; 
} 

Ваш ul должен быть в форме для этих решений:

<ul id="my-ul"> 
+0

Спасибо. Ваше первое решение прекрасно написано –

1

Вы не можете использовать ul.style.display.

document. getElementsByTagName('ul').style.display = "block !important"

+0

Спасибо. Однако ul уже определен далее в коде. Я только разместил здесь небольшой фрагмент. Извините за путаницу –