<header>
не является элементом, но <head>
является.
- единственными законными детьми
<html>
являются <head>
и <body>
. В примере кода есть элемент <script>
, который является дочерним по отношению к <html>
nav_color_swap
устанавливает имя класса для navid, а не navid_array[i]
, когда navid != navid_array[i]
. Вероятно, это источник вашей проблемы.
- Когда это исправлено, обработчики щелчков для
<a>
установят имя класса для всех элементов равным navCSS1, поскольку <a>
не имеет атрибутов ID.
Поскольку при каждом щелчке необходимо изменять не более двух классов элементов, я рекомендую отслеживать текущий элемент, а не циклически повторять все элементы:
<style type="text/css">
.selected {
background-image:url('news_selected.png');
}
.news, .news li {
padding: 0;
margin: 0;
list-style-type: none;
}
...
</style>
<script type="text/javascript">
function createNavSelector(curr_nav, selectedClass, unselectedClass) {
return function (nav) {
curr_nav.className = unselectedClass;
curr_nav = nav;
curr_nav.className = selectedClass;
}
};
</script>
</head>
<body>
...
<div class="container_news">
<ul class="news">
<li id="nav1" onclick="nav_select(this)">Blah 1</li>
<li id="nav2" onclick="nav_select(this)">Blah 2</li>
<li id="nav3" class="selected" onclick="nav_select(this)">Blah 3</li>
<li id="nav4" onclick="nav_select(this)">Blah 4</li>
<li id="nav5" onclick="nav_select(this)">Blah 5</li>
</ul>
</div>
<script type="text/javascript">
var nav_select = createNavSelector(document.getElementById('nav3'), 'selected', '');
Поскольку #nav*
представляется списком новостей или списком элементов навигации, я переключился на использование элементов, поскольку они несут больше семантической информации, чем <div>
с. На данный момент, div-vs-ol / ul - это вопрос личных предпочтений.
Я также переименовал функции и классы элементов, чтобы отразить их назначение, а не то, как они выполняют эту цель. Таким образом, вы можете изменить их поведение, не требуя изменения имени.
Использовали ли вы <a>
для поддержки старых версий IE? Я бы не стал беспокоиться о чем-либо старше IE 6 .
Что касается комментариев «Нет возврата», «Возврата нет», вот несколько ссылок, которые помогут вам начать отладку JS с помощью Firebug . Safari также имеет хороший отладчик, если это ваш браузер.