Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   отключение своей функции (https://javascript.ru/forum/events/29371-otklyuchenie-svoejj-funkcii.html)

disgraceful 25.06.2012 16:47

отключение своей функции
 
есть функция off, которая выполняется бесконечным циклом при загрузке страницы, как ее отключить при вызове функции start?

Dim@ 25.06.2012 17:02

disgraceful,
есть такие вещи как setInterval и clearInterval :) для примера:
<script>
i = 0;
var interval = setInterval('func()', 1000);
function func(){
 document.getElementById('span').innerHTML = i;
 i++;
}
function off(){
 clearInterval(interval);
}
</script>
<input type='button' value='Off' onclick='off()'>
<span id='span'></span>

disgraceful 25.06.2012 17:14

а на примере данного кода?
<html>
<head>
<title>
</title>
<style type="text/css">
button{height:10%; color:yellow; background-color:black; position:absolute; cursor:pointer;}
</style>
<script laguage=javascript>
function off()
{setTimeout(yellowmig1, 1000)
setTimeout(yellowmig2, 2000)
setTimeout(off, 3000)
}

function red()
{
var aobj=document.getElementById("red");aobj.style.opa city="1.0";
}

function yellowmig1()
{
aobj=document.getElementById("yellow");aobj.style. opacity="1.0";
}

function yellowmig2()
{
aobj=document.getElementById("yellow");aobj.style. opacity="0.4";
}

function green()
{
var bobj=document.getElementById("red");bobj.style.opa city="0.4";
aobj=document.getElementById("green");aobj.style.o pacity="1.0";
}
function green1()
{

aobj=document.getElementById("green");aobj.style.o pacity="0.4";

}
function green2()
{

aobj=document.getElementById("green");aobj.style.o pacity="1.0";

}

function start()
{


setTimeout(red, 5000)
setTimeout(yellowmig1, 10000)
setTimeout(yellowmig2, 11000)
setTimeout(yellowmig1, 12000)
setTimeout(yellowmig2, 13000)
setTimeout(yellowmig1, 14000)
setTimeout(yellowmig2, 15000)
setTimeout(yellowmig1, 16000)
setTimeout(yellowmig2, 17000)
setTimeout(yellowmig1, 18000)
setTimeout(yellowmig2, 19000)
setTimeout(green, 20000)
setTimeout(green1, 21000)
setTimeout(green2, 22000)
setTimeout(green1, 23000)
setTimeout(green2, 24000)
setTimeout(green1, 25000)
setTimeout(yellowmig1, 26000)
setTimeout(yellowmig2, 31000)
setTimeout(start, 27000)
}
</script>
</head>
<body onload=off()>
<img src="fon.jpg" height=80% style="z-index:0">
<img src="red.png" width=12% height=25% style="z-index:1; position:absolute;left:8%; top:3%; opacity:0.4" Id="red">
<img src="yellow.png" width=12% height=25% style="z-index:1; position:absolute;left:8%; top:28%; opacity:0.4"

Id="yellow">
<img src="green.png" width=12% height=25% style="z-index:1; position:absolute;left:8%; top:53%; opacity:0.4" Id="green">
<button style="top:30%;" onclick="start()">Включить</button>
</body>
</html>

Dim@ 25.06.2012 17:42

я не очень понял суть ну ладно вот так надо сделать:
<html>
<head>
<title>
</title>
<style type="text/css">
button{height:10%; color:yellow; background-color:black; position:absolute; cursorointer;}
</style>
</head>
<body onload=off()>
<img src="fon.jpg" height=80% style="z-index:0">
<img src="red.png" width=12% height=25% style="z-index:1; position:absolute;left:8%; top:3%; opacity:0.4" Id="red">
<img src="yellow.png" width=12% height=25% style="z-index:1; position:absolute;left:8%; top:28%; opacity:0.4" Id="yellow">
<img src="green.png" width=12% height=25% style="z-index:1; position:absolute;left:8%; top:53%; opacity:0.4" Id="green">
<button style="top:30%;" onclick="clearInterval(ofInter);start()">Включить</button>
<script type='text/javascript'>
var red = document.getElementById('red');
var yellow = document.getElementById('yellow');
var green = document.getElementById('green');
function off()
{
setTimeout(yellowmig1, 1000)
setTimeout(yellowmig2, 2000)
}
off();
ofInter = setInterval('off()', 3000);
function red()
{
red.style.opacity="1.0";
}
function yellowmig1()
{
yellow.style.opacity="1.0";
}

function yellowmig2()
{
yellow.style.opacity="0.4";
}
function green()
{
red.style.opacity="0.4";
green.style.opacity="1.0";
}
function green1()
{
green.style.opacity="0.4";
}
function green2()
{
green.style.opacity="1.0";
}
function start()
{
setTimeout(red, 5000)
setTimeout(yellowmig1, 10000)
setTimeout(yellowmig2, 11000)
setTimeout(yellowmig1, 12000)
setTimeout(yellowmig2, 13000)
setTimeout(yellowmig1, 14000)
setTimeout(yellowmig2, 15000)
setTimeout(yellowmig1, 16000)
setTimeout(yellowmig2, 17000)
setTimeout(yellowmig1, 18000)
setTimeout(yellowmig2, 19000)
setTimeout(green, 20000)
setTimeout(green1, 21000)
setTimeout(green2, 22000)
setTimeout(green1, 23000)
setTimeout(green2, 24000)
setTimeout(green1, 25000)
setTimeout(yellowmig1, 26000)
setTimeout(yellowmig2, 31000)
setTimeout('start()', 27000)
}
</script>
</body>
</html>

Deff 25.06.2012 19:00

Dim@,
:yes: Лучше эту длинноту сделать функцией с вызовом массива двух переменных, тады укоротицо все

array=[
yellowmig1,yellowmig2,yellowmig1,yellowmig2,yellowmig1,
yellowmig2,yellowmig1, yellowmig2,yellowmig1,yellowmig2,
green,green1,green2,green1,green2,green1,yellowmig1,
yellowmig2,start() ]

function SetArray (array,index){
  if(index<array.length){index++
     setTimeout(function () {array[index];SetArray (array,index)}, 1000)
}}SetArray (array,-1)

Dim@ 25.06.2012 22:38

Deff,
:yes: :thanks:


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