Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не работает функция (https://javascript.ru/forum/dom-window/2321-ne-rabotaet-funkciya.html)

Destrifer 06.12.2008 22:45

Не работает функция
 
После скролла списка не срабатывает функция my() (которая убирает его).
Если им не пользоваться все ок.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script>

z=250;
b=0;
a=0;
function my2()   
{
	if(z==115) {return};
	a=setTimeout('my2()',10);
    z -= 1;
    document.getElementById("div1").style.top = z + 'px';
}

function my3()   
{
	if(z==250) {return};
	d=setTimeout('my3()',10);
    z += 1;
    document.getElementById("div1").style.top = z + 'px';
}

function my()   
{
	if (a == 0){
	if(b == -164) {a=1; document.getElementById("bt").innerHTML = "&#8594"; return;}
	setTimeout('my()',10);
    b -= 4;
    document.getElementById("div1").style.left = b + 'px';}
	else if (a == 1){
	if (b == 0) {a=0; document.getElementById("bt").innerHTML = "&#8592"; return;}
	setTimeout('my()',10);
    b += 4;
    document.getElementById("div1").style.left = b + 'px';}
}
</script>
<style>
body {
margin:0;
background-color:#333;
}
#div1 {
width: 164px;
position: fixed;
z-index: 1;
}
.div11 {
width: 164px;
position: fixed;
height:136px;
top: 30%;
z-index: 0;
}
.div111 {
width: 164px;
height:136px;
position: fixed;
top: 30%;
z-index: 1;
clip: rect(0 164px 136px 0);
}
#div1 > a {
display: block;
text-decoration: none;
color: #ffffff;
padding: 5px;
background:#212121;
border: 2px ridge #000;
}
#div1 > a:hover {background: #7f7f7f;}
.div3 {
position:absolute;
top:0;
left:50%;
margin-left:-41px;
margin-top:-26px;
}
.div3 a {
text-decoration: none;
color: #ffffff;
border: 2px ridge #000;
background:#212121;
padding: 5px 30px;
}
.div3 a:hover {background: #7f7f7f;}
.div4 {
position:absolute;
left:50%;
top:100%;
margin-left:-41px;
margin-top:7px;
}
.div4 a {
text-decoration: none;
color: #ffffff;
border: 2px ridge #000;
background:#212121;
padding: 5px 30px;
}
.div4 a:hover {background: #7f7f7f;}
#slide {
position:absolute;
right:-30px;
top:50%;
margin-top:-18px;
}
#slide > a {
text-decoration: none;
color: #ffffff;
border: 2px ridge #000;
background:#212121;
padding: 30px 5px;
line-height:36px;
}
#slide > a:hover {background: #7f7f7f;}
</style>
</head>

<body>
<div class="div111">
<div id="div1">
	<a href="#" >111</a>
	<a href="#" >222</a>
	<a href="#" >333</a>
	<a href="#" >444</a>
	<a href="#" >555</a>
	<a href="#" >666</a>
	<a href="#" >777</a>
	<a href="#" >888</a>
</div>
</div>
<div class="div11">
	<div class="div3" onmouseover="my2();" onmouseout='clearTimeout(a);';><a href="#nul">&#8593</a></div>
	<div class="div4" onmouseover="my3();" onmouseout='clearTimeout(d);';><a href="#nul">&#8595</a></div>
	<div id="slide" onclick="my()"><a id='bt' href="#nul">&#8592</a></div>
</div>
<div id='tt'></div>
</body>
</html>

Gvozd 06.12.2008 23:24

Цитата:

Сообщение от Destrifer
a=setTimeout('my2()',10);

Цитата:

Сообщение от Destrifer
function my()
{
if (a == 0){

потому что вы одну и ту же переменную используете по принципиально разным надобностям

Gvozd 06.12.2008 23:30

после вызова ТОЛЬКО прокрутки вниз, скрытие/раскрытие работает нормально

ЗЫ научитесь пользватся
var
. очень полезная штука знаете ли

Destrifer 06.12.2008 23:41

Цитата:

Сообщение от Destrifer
a=setTimeout('my2()',10);


Сообщение от Destrifer
function my()
{
if (a == 0){


потому что вы одну и ту же переменную используете по принципиально разным надобностям
Ааа, черт... И вроде проверял переменные... век живи век учись... Спасибо :)
Цитата:

ЗЫ научитесь пользватся var

. очень полезная штука знаете ли
Просто решил съэкономить на синтаксисе... И так всегда работало...
Вроде var указывает на объявление глобальной переменной.
А если без него что, локальная?

Zibba 07.12.2008 00:16

Наоборот с var локальная, без нее в любом контексте - глобальная. Но если var употребляется в глобальном контексте (объект window) то переменная будет глобальной.

Gvozd 07.12.2008 00:33

наоборот
тут на сайте есть куча ОЧЕНЬ качественных статей, справочник по языку, и еще куча всякого полезного.
все это в вашем распоряжении
Сперва перестаньте экономить время на изучение основ
Цитата:

Сообщение от Destrifer
И так всегда работало...

знаете. в мультике SouthPark, люди научились ректально потреблять пищу, и избавлятся от продуктов ее переработки через рот.
не самый удобный способ, но они находили это приемлимым, и даже крутым.
вы тоже так считаете?

Destrifer 07.12.2008 00:40

Цитата:

Наоборот с var локальная, без нее в любом контексте - глобальная. Но если var употребляется в глобальном контексте (объект window) то переменная будет глобальной.
Ок, спасибо
Цитата:

наоборот
тут на сайте есть куча ОЧЕНЬ качественных статей, справочник по языку, и еще куча всякого полезного.
все это в вашем распоряжении
Сперва перестаньте экономить время на изучение основ
Грешен, посыпаю голову пеплом...
Цитата:

знаете. в мультике SouthPark, люди научились ректально потреблять пищу, и избавлятся от продуктов ее переработки через рот.
не самый удобный способ, но они находили это приемлимым, и даже крутым.
вы тоже так считаете?
SouthPark я не смотрю, но замечание, конечно, справедливое :)

Gvozd 07.12.2008 01:13

Destrifer,
надеюсь все вышеперчесленное пойдет вам на пользу(даже и не сомневаюсь что так и будет), и ваш уровень возрастет.
PS очень рекосендую использовать FireBug под FireFox, для отладки JS

Destrifer 07.12.2008 01:34

Спасибо, возьму на вооружение :)


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