Я пытаюсь изменить класс div, используя onclick уведомитель объекта. Код выглядит так, как будто он должен работать, но когда я пытаюсь устранить неполадки с Firebug, похоже, что цикл for (который даже Firebug показывает только 1 элемент в нем) выполняется более одного раза и вызывает ошибку во второй раз. Вот Javascript:Проблема с классами смены Javascript
function handleElements(elementid,containerid) {
// Get array of all 'visible' elements in the container
var elements = document.getElementById(containerid).getElementsByClassName('visible');
// Iterate over that array and make them all 'hidden'
for (var i in elements) {
var object = elements[i].id;
document.getElementById(object).className='hidden';
}
// Get the 'clicked' tab and set it to 'visible'
var clicked = document.getElementById(elementid);
clicked.className='visible';
}
А вот HTML:
<div id="wrapper">
<div id="leftpanel">
<div id="navcontainer">
<ul id="navlist">
<li><a href="javascript:;" onClick="handleElements('Modules','rightpanel')">Modules</a></li>
<li><a href="javascript:;" onClick="handleElements('DataViewer','rightpanel')">Data Viewer</a><li>
<li><a href="javascript:;" onClick="handleElements('Alarms','rightpanel')">Alarms</a><li>
<li><a href="javascript:;" onClick="handleElements('Logging','rightpanel')">Logging</a><li>
<li><a href="javascript:;" onClick="handleElements('Outputs','rightpanel')">Output Control</a><li>
</ul>
</div>
</div>
<div id="rightpanel">
<div id="Modules" class="visible">
<h2>Module Information Here</h2>
</div>
<div id="DataViewer" class="hidden">
<h2>Data Viewer Here</h2>
</div>
<div id="Alarms" class="hidden">
<h2>Alarm Page Here</h2>
</div>
<div id="Logging" class="hidden">
<h2>Logging Setup Here</h2>
</div>
<div id="Outputs" class="hidden">
<h2>Output Control Here</h2>
</div>
</div>
Какое сообщение об ошибке? – Adam
@everse: * 'Uncaught TypeError: Невозможно установить свойство 'className' of null' * По какой-то причине, хотя 'object' (нечетное имя для него!) Является правильным значением' id', 'getElementById' возвращает' null '. Реплицировано здесь: http://jsbin.com/evejid/1 (источник: http://jsbin.com/evejid/1/edit). –