Не все дочерние узлы являются элементами, некоторые являются текстовыми узлами в некоторых браузерах, а текстовые узлы не имеют свойства стиля.Попытка получить доступ к свойству несуществующего свойства приводит к ошибке.
Либо проверьте тип узла, либо у узла сначала есть (не ложное значение) его свойство стиля:
if (children[i].style) {
children[i].style.display="none";
}
Однако вам может быть гораздо удобнее использовать класс и соответствующее правило CSS и просто добавить его к родительскому элементу.
например,
<style type="text/css">
.hideAll * {
display: none;
}
</style>
</script type="text/javascript">
<button onclick="
document.getElementById('d0').className = 'hideAll';
">Hide all</button>
<button onclick="
document.getElementById('d0').className = '';
">Show all</button>
<div id="d0">Here is the div
<ul>
<li class="item">apple
<li class="item">orange
<li class="item">banana
</ul>
</div>