Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Ребята очень нужна помощь. (https://javascript.ru/forum/events/12094-rebyata-ochen-nuzhna-pomoshh.html)

Denstell 30.09.2010 03:32

Ребята очень нужна помощь.
 
Сразу оговорюсь! Я новичок.
Есть такой простенький сценарий на javascript:

var step = 10;
function changePanel ()
{
var panel = document.getElementById("myDiv");
if (panel.style.display == "none")
{
panel.style.display = "";
expandPanel();
}

else
{
panel.originalHeight = panel.clientHeight;
collapsePanel();
}
}

function collapsePanel ()
{
var panel = document.getElementById("myDiv");
var a = document.getElementById("collapse");
if (panel.clientHeight >= step)
{
var panelHeight = panel.clientHeight - step;
panel.style.height = panelHeight;
setTimeout("collapsePanel()", 2);
}
else
{
a.firstChild.nodeValue = "Развернуть";
panel.style.display = "none";
}
}

function expandPanel ()
{
var panel = document.getElementById("myDiv");
var a = document.getElementById("collapse");
if (panel.clientHeight < (panel.originalHeight - step))
{
var panelHeight = panel.clientHeight + step;
panel.style.height = panelHeight + "px";
setTimeout("expandPanel()", 2);
}
else
{
panel.style.height = "auto";
a.firstChild.nodeValue = "Свернуть";
}
}

Это простенькая выезжающая и заежжающая пенэлька.

Так вот у меня вопрос:

Если я в параметрах функции getElementById ставлю не конкретный id DOM элемента HTML а пытаюсь передать параметром через функцию то весь сценарий ведёт себя совершенно по другому. А именно: панель сама не прячется а уменьшается по чуть чуть по клику по кнопочке или ссылке в которой была вызвана общая функция запуска сценария. может кто то что то знает почему всё так?

То есть пытаюсь я сделать вот такой сценарий:

var step = 10;
function changePanel (n)
{
var panel = document.getElementById(n);
if (panel.style.display == "none")
{
panel.style.display = "";
expandPanel(n);
}

else
{
panel.originalHeight = panel.clientHeight;
collapsePanel(n);
}
}

function collapsePanel (n)
{
var panel = document.getElementById(n);
var a = document.getElementById("collapse");
if (panel.clientHeight >= step)
{
var panelHeight = panel.clientHeight - step;
panel.style.height = panelHeight;
setTimeout("collapsePanel()", 2);
}
else
{
a.firstChild.nodeValue = "Развернуть";
panel.style.display = "none";
}
}

function expandPanel (n)
{
var panel = document.getElementById(n);
var a = document.getElementById("collapse");
if (panel.clientHeight < (panel.originalHeight - step))
{
var panelHeight = panel.clientHeight + step;
panel.style.height = panelHeight + "px";
setTimeout("expandPanel()", 2);
}
else
{
panel.style.height = "auto";
a.firstChild.nodeValue = "Свернуть";
}
}

<a href="javascript:changePanel('myDiv')"></a> вот так я передаю id в функцию параметром.

Octane 30.09.2010 07:15

отформатируйте код http://javascript.ru/formatting

Skipp 30.09.2010 09:21

Проверьте что передаёте в getElementById


Часовой пояс GMT +3, время: 12:12.