Вы понимаете, что ваш код невалиден с точки зрения (X)HTML? Оформите код разметки правильно, и всё будет работать.
<ul>
<li><span>Level 1 list element</span>
<ul>
<li>list element</li>
<li>Level 2 list element</li>
<li>list element</li>
<li>Level 2 list element</li>
<li>Level 2 list element</li>
</ul>
</li>
<li><span>Level 1 list element</span>
<ul>
<li>list element</li>
<li>Level 2 list element</li>
<li>list element</li>
<li>Level 2 list element</li>
<li>Level 2 list element</li>
</ul>
</li>
<li><span>Level 1 list element</span>
<ul>
<li>list element</li>
<li>Level 2 list element</li>
<li>list element</li>
<li>Level 2 list element</li>
<li>Level 2 list element</li>
</ul>
</li>
<ul>
<script type="text/javascript">
var lis = document.getElementsByTagName("li");
var outLis = [];
for (var i = 0; i < lis.length; i++) {
if (lis[i].parentNode.parentNode.nodeName.toLowerCase() != "li")
outLis.push(lis[i].getElementsByTagName("span")[0].innerHTML);
}
alert(outLis);
</script>