Far funzionare uno script ad intervalli di tempo

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Salve, se volessi far funzionare un dato javascript diciamo solo per 20 sec poi interromperlo per altri 30 e cosi via che comando devo usare e sopratutto dove inserirlo ?

Grazie per l'eventuale risposta :)
Domenico.
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Ho provato ad mettere il comando :

HTML:
            $(document).ready(function()
            {
                    setInterval('nomefunzione()',4000);
            });
prima di alcune funzioni dello script vitali ma non funge :(
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Per maggiore chiarezza prendiamo un semplice script :

HTML:
<html>
<head>
<script language="JavaScript">
<!--
img = new Array()

img[0] = 'fantasma.gif';
img[1] = 'angelo.gif';
img[2] = 'spade.gif'; 

function cambia() { 
        if (img.length!=0) { 
ran = Math.floor(3 * Math.random());

urlofimage=img[ran]
  document.write("<img src=\""+urlofimage+"\">");           
        
setTimeout('cambia()',4000);
}    }   


cambia()

// -->
</script>

</head>

<body>

</body>
</html>


che diciamo "scrive" l'immagine ogni 4 secondi....
Allora io vorrei che ciò avvenisse diciamo per un minuto e poi per due minuti si interrompesse poi per un altro minuto ancora scriva le immagini ogni 4 sec e poi si interrompe ancora e via dicendo....
spero di essere stato chiaro.
Grazie.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Potresti provare qualcosa di simile
Ho usato innerHTML perche con write a me non funziona
Codice:
<html>
    <head></head>
    <body>
        <div id="immagine"></div>

        <script type="text/javascript">   
         
           img = new Array();
           img[0] = 'fantasma.gif';
           img[1] = 'angelo.gif';
           img[2] = 'spade.gif';              
            var tempo = 0;
            
            function cambia() { 
                if (img.length!=0) { 
                    ran = Math.floor(3 * Math.random());
                    urlofimage=img[ran];
                    document.getElementById("immagine").innerHTML = "<img src='" + urlofimage + "'>";  

                    tempo+=4;                      
                    if(tempo < 60) {
                        setTimeout('cambia()',4000);
                    }else{
                        tempo=0;
                        setTimeout('cambia()',120000);
                    }                    
                }    
            }   
            cambia();            
        </script>
    </body>
</html>
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Salve e grazie della risposta, purtroppo non va bene cosi... il setTimeout va ad interagire con il cambio delle immagini e non con la comparsa dell'immagine e poi perdona la variabile tempo nel caso che hai messo, come la si calcola ??
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Scusa ho capito il procedimento che hai usato e funziona, perdona la domanda stupida del fatto della variabile... è un contatore.... sorry :(

Solo che cosi si fa in modo che le immagini cambiano in tempi diversi... io vorrei proprio che l'immagine sparisse per diciamo un minuto e poi ricompare per un altro minuto e cosi via....
spero di essere stato chiaro e scusa ancora :)
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Intanto ho provato cosi, ho modificato quella parte del codice con windows.onload in questo modo,

originale :

HTML:
if (window.addEventListener)
window.addEventListener("load", pagestart, false)
else if (window.attachEvent)
window.attachEvent("onload", pagestart)
else if (document.getElementById)
window.onload=pagestart();
in questo :

HTML:
if (window.addEventListener)
window.addEventListener("load", pagestart, false)
else if (window.attachEvent)
window.attachEvent("onload", pagestart)
else if (document.getElementById)



window.onload = function() { 

var counter = 0;

var interval = setInterval(function() {
counter += 1;

pagestart();

if(counter == 10) {
           clearInterval(interval);

 }
        
      }, 1000);
        
        
    };
sperando che dopo 10 cicli si fermasse, invece...... :(
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Dovrebbe essere ( almeno credo ... ) un qualcosa del genere :

HTML:
function pagestart(){
pipistrello1=new Chip("pipistrello1",147,168);
movechip("pipistrello1");
}

function vedere() {
if (window.addEventListener)
window.addEventListener("load", pagestart, false)
else if (window.attachEvent)
window.attachEvent("onload", pagestart)
else if (document.getElementById)
window.onload=pagestart()
}


function comparire() { 
  var counter = 0;
     var interval = setInterval(function() {
           counter += 1;

       vedere()

   if(counter == 10) {
             clearInterval(interval);

 }
        
      }, 1000);
        
        
     setTimeout('comparire()',60000);  };
ma chiaramente non va.... manca di sicuro la parte che fa avanzare il contatore e altri errori... :(
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Buonasera continuo la mia esposizione di tentativi :)

allora ho trovato in rete questo script che conta il tempo di permanenza in una pagina e poi l'ho adattato per una prima prova cosi :

HTML:
<html>
<head>
<title>Tempo di accesso</title>
<script>


startday = new Date();
clockStart = startday.getTime();
function initStopwatch()
{
var myTime = new Date();
var timeNow = myTime.getTime();
var timeDiff = timeNow - clockStart;
this.diffSecs = timeDiff/1000;
return(this.diffSecs);
}

function getSecs()
{
var mySecs = initStopwatch();
var mySecs1 = ""+mySecs;
var dec = mySecs1
var parteInt = Math.floor(dec);

if(parteInt%10==0 ) { document.write('ciao') }


window.setTimeout('getSecs()',1000);

}

getSecs()



</script>
</head>
Ogni multiplo di tempo di 10 comparirà la parola ciao... pensato di adattarlo al mio script :

HTML:
<html>
<head>

<script type='text/javascript'>
//<![CDATA[
/***********************************************
* Pipistrelli volanti nel blog
* Script originale di Virtual_Max
* Adattato da ciudadblogger.com e da www.ideepercomputeredinternet.com
***********************************************/
var vmin=2;
var vmax=5;
var vr=2;
var timer1=null;

           
function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}



function Chip(chipname,width,height){
this.named=chipname;
this.vx=vmin+vmax*Math.random();
this.vy=vmin+vmax*Math.random();
this.w=width+20;
this.h=height;
this.xx=0;
this.yy=0;
this.timer1=null;
}



function movechip(chipname){
if (document.getElementById){
eval("chip="+chipname);
if (window.innerWidth || window.opera){
pageX=window.pageXOffset;
pageW=window.innerWidth-40;
pageY=window.pageYOffset;
pageH=window.innerHeight-20;
}
else if (document.body){
pageX=iecompattest().scrollLeft;
pageW=iecompattest().offsetWidth-40;
pageY=iecompattest().scrollTop;
pageH=iecompattest().offsetHeight-20;
}
chip.xx=chip.xx+chip.vx;
chip.yy=chip.yy+chip.vy;
chip.vx+=vr*(Math.random()-0.5);
chip.vy+=vr*(Math.random()-0.5);
if(chip.vx>(vmax+vmin)) chip.vx=(vmax+vmin)*2-chip.vx;
if(chip.vx<(-vmax-vmin)) chip.vx=(-vmax-vmin)*2-chip.vx;
if(chip.vy>(vmax+vmin)) chip.vy=(vmax+vmin)*2-chip.vy;
if(chip.vy<(-vmax-vmin)) chip.vy=(-vmax-vmin)*2-chip.vy;
if(chip.xx<=pageX){
chip.xx=pageX;
chip.vx=vmin+vmax*Math.random();
}
if(chip.xx>=pageX+pageW-chip.w){
chip.xx=pageX+pageW-chip.w;
chip.vx=-vmin-vmax*Math.random();
}
if(chip.yy<=pageY)
{chip.yy=pageY;
chip.vy=vmin+vmax*Math.random();
}
if(chip.yy>=pageY+pageH-chip.h)
{chip.yy=pageY+pageH-chip.h;
chip.vy=-vmin-vmax*Math.random();
}
document.getElementById(chip.named).style.left=chip.xx+"px";
document.getElementById(chip.named).style.top=chip.yy+"px";
chip.timer1=setTimeout("movechip('"+chip.named+"')",100);
}
}

  


function pagestart(){
pipistrello1=new Chip("pipistrello1",147,168);
movechip("pipistrello1");

}





startday = new Date();
clockStart = startday.getTime();
function initStopwatch() 
{ 
 var myTime = new Date(); 
        var timeNow = myTime.getTime();  
        var timeDiff = timeNow - clockStart; 
        this.diffSecs = timeDiff/1000; 
        return(this.diffSecs); 
} 

function xx() {
if (window.addEventListener)
window.addEventListener("load", pagestart, false)
else if (window.attachEvent)
window.attachEvent("onload", pagestart)
else if (document.getElementById)
window.onload=pagestart()
 window.setTimeout('xx()',1000)
}

xx()



//]]>

</script>

<style>
            #pipistrello1, #pipistrello2{
                filter:alpha(opacity=30);
                -moz-opacity: 0.3;
                opacity: 0.3;
                -khtml-opacity: 0.3;
            }
            html {
                overflow-x:hidden;
            }
        </style>


</head>

<body>


 


<script type="text/javascript">

//<![CDATA[  


   var img = new Array();

img[0] = 'http://3.bp.blogspot.com/--4o8SyDXMj4/UDjNnsiPiQI/AAAAAAAAB5c/ZxX9KXOwMEE/s1600/ASBURGO.png';
img[1] = 'http://3.bp.blogspot.com/-QtDllflIit8/UDjNnnMo8FI/AAAAAAAAB5k/yjzvKTtylSE/s1600/AsburgoLorena.png';
img[2] = 'http://1.bp.blogspot.com/-m1K05Pjjrcs/UDjNoFSzD7I/AAAAAAAAB5o/H5FPNnM1vUA/s1600/BAVIERAI.png';

startday = new Date();
clockStart = startday.getTime();
function initStopwatch() 
{ 
 var myTime = new Date(); 
        var timeNow = myTime.getTime();  
        var timeDiff = timeNow - clockStart; 
        this.diffSecs = timeDiff/1000; 
        return(this.diffSecs); 
} 

function getSecs() 
{ 
        var mySecs = initStopwatch(); 
        var mySecs1 = ""+mySecs; 
  var dec = mySecs1
var parteInt   = Math.floor(dec);


         
if(parteInt%10==0 ) { with (document){

write("<div id='pipistrello1' style='position:absolute; z-index:60; left: -500px; width:125px; height:108px;'></div>")
} 

 } 

    
        window.setTimeout('getSecs()',1000); 

}

getSecs()     

function random()
{
    ran = Math.floor(3* Math.random());
    urlofimage = img[ran];
    elem = document.getElementById("pipistrello1").innerHTML = '<img src="' + urlofimage + '" />';

   
}

random();

   
            
  
//]]>         
          </script>
 
   </body>
</html>
Facendo cosi appena apro il sito l'immagine rimane per il tempo che : if(parteInt%10==0 ) è vera e poi scompare e sin qui bene ma adesso per far ripartire lo script ?? ho pensato di agire sui codici degli onload infatti ho fatto cosi :

HTML:
function xx() {
if (window.addEventListener)
window.addEventListener("load", pagestart, false)
else if (window.attachEvent)
window.attachEvent("onload", pagestart)
else if (document.getElementById)
window.onload=pagestart()
 window.setTimeout('xx()',1000)
}

xx()
ma non va.... mi aiutate per cortesia :))
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Anche se purtroppo sicuramente impegnati e non mi avete potuto rispondere vi espongo il mio ultimo tentativo in ordine di tempo. Ho deciso di usare il setInterval function() nel modo che adesso mi posto ma non funziona.
Ci ho provato di tutto, mettendo la funzione random, il write del del dvd, ma niente... con la funzione random() chiaramente interrompe solo il cambio di immagini, se metto il write del dv , ad un certo punto si ferma ma poi ricompaiono sicuramente inviati dal random e non so cosa fare.... (

Posto lo script completo sperando che qualcuno di buon cuore ci provi ad aiutarmi...

HTML:
<html>


<head>

<script type='text/javascript'>
//<![CDATA[


/***********************************************
* Pipistrelli volanti nel blog
* Script originale di Virtual_Max
* Adattato da ciudadblogger.com e da www.ideepercomputeredinternet.com
***********************************************/
var vmin=2;
var vmax=5;
var vr=2;
var timer1=null;


function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}



function Chip(chipname,width,height){
this.named=chipname;
this.vx=vmin+vmax*Math.random();
this.vy=vmin+vmax*Math.random();
this.w=width+20;
this.h=height;
this.xx=0;
this.yy=0;
this.timer1=null;
}



function movechip(chipname){
if (document.getElementById){
eval("chip="+chipname);
if (window.innerWidth || window.opera){
pageX=window.pageXOffset;
pageW=window.innerWidth-40;
pageY=window.pageYOffset;
pageH=window.innerHeight-20;
}
else if (document.body){
pageX=iecompattest().scrollLeft;
pageW=iecompattest().offsetWidth-40;
pageY=iecompattest().scrollTop;
pageH=iecompattest().offsetHeight-20;
}
chip.xx=chip.xx+chip.vx;
chip.yy=chip.yy+chip.vy;
chip.vx+=vr*(Math.random()-0.5);
chip.vy+=vr*(Math.random()-0.5);
if(chip.vx>(vmax+vmin)) chip.vx=(vmax+vmin)*2-chip.vx;
if(chip.vx<(-vmax-vmin)) chip.vx=(-vmax-vmin)*2-chip.vx;
if(chip.vy>(vmax+vmin)) chip.vy=(vmax+vmin)*2-chip.vy;
if(chip.vy<(-vmax-vmin)) chip.vy=(-vmax-vmin)*2-chip.vy;
if(chip.xx<=pageX){
chip.xx=pageX;
chip.vx=vmin+vmax*Math.random();
}
if(chip.xx>=pageX+pageW-chip.w){
chip.xx=pageX+pageW-chip.w;
chip.vx=-vmin-vmax*Math.random();
}
if(chip.yy<=pageY)
{chip.yy=pageY;
chip.vy=vmin+vmax*Math.random();
}
if(chip.yy>=pageY+pageH-chip.h)
{chip.yy=pageY+pageH-chip.h;
chip.vy=-vmin-vmax*Math.random();
}
document.getElementById(chip.named).style.left=chip.xx+"px";
document.getElementById(chip.named).style.top=chip.yy+"px";
chip.timer1=setTimeout("movechip('"+chip.named+"')",100);
}
}




function pagestart(){
pipistrello1=new Chip("pipistrello1",147,168);
movechip("pipistrello1");
}


startday = new Date();
clockStart = startday.getTime();
function initStopwatch()
{
var myTime = new Date();
var timeNow = myTime.getTime();
var timeDiff = timeNow - clockStart;
this.diffSecs = timeDiff/1000;
return(this.diffSecs);
}


if (window.addEventListener)
window.addEventListener("load", pagestart, false)
else if (window.attachEvent)
window.attachEvent("onload", pagestart)
else if (document.getElementById)
window.onload=pagestart()






//]]>

</script>

<style>
#pipistrello1, #pipistrello2{
filter:alpha(opacity=30);
-moz-opacity: 0.3;
opacity: 0.3;
-khtml-opacity: 0.3;
}
html {
overflow-x:hidden;
}
</style>


</head>

<body>

<div id='pipistrello1' style='position:absolute; z-index:60; left: -500px; width:125px; height:108px;'></div>


<script type="text/javascript">

//<![CDATA[



var img = new Array();

img[0] = 'http://3.bp.blogspot.com/--4o8SyDXMj4/UDjNnsiPiQI/AAAAAAAAB5c/ZxX9KXOwMEE/s1600/ASBURGO.png';
img[1] = 'http://3.bp.blogspot.com/-QtDllflIit8/UDjNnnMo8FI/AAAAAAAAB5k/yjzvKTtylSE/s1600/AsburgoLorena.png';
img[2] = 'http://1.bp.blogspot.com/-m1K05Pjjrcs/UDjNoFSzD7I/AAAAAAAAB5o/H5FPNnM1vUA/s1600/BAVIERAI.png';


function random() {
ran = Math.floor(3 * Math.random());
urlofimage = img[ran];
elem = document.getElementById("pipistrello1").innerHTML = '<img src="' + urlofimage + '" />';
};


setInterval(function(){//intervallo totale pausa+esecuzione

azione=setInterval(function(){//intervallo mentre attivo
//qui finiscono i codici


random();
},2000);

setTimeout(function(){//quando fermare
clearTimeout(azione);
},7000);

},20000);




//]]>
</script>

</body>
</html>
Grazie per eventuale risposta :)

Domenico.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
eri partito bene in questa discussione :
Per maggiore chiarezza prendiamo un semplice script :
poi ti sei perso e hai cominciato a postare codice convulsamente

non stai postando un codice facile, senza contare che è disordinato e datato.

quindi fossi in te farei due passi indietro.

prova questo esempio con cui tra l'altro ero partito, ho aggiunto un div che tiene conto del tempo passato
HTML:
<html>
    <head></head>
    <body>
        <div id="immagine"></div><div id="tempo"></div>

        <script type="text/javascript">   
         
            img = new Array();
            img[0] = 'fantasma.gif';
            img[1] = 'angelo.gif';
            img[2] = 'spade.gif';              
            var tempo = 0;
            
            function cambia() { 
                if (img.length!=0) { 
                    ran = Math.floor(3 * Math.random());
                    urlofimage=img[ran];
                    document.getElementById("immagine").innerHTML = "<img src='" + urlofimage + "'>";  

                    tempo+=1;                      
                    if(tempo < 60) {
                        document.getElementById("tempo").innerHTML = tempo;
                        setTimeout('cambia()',100);
                    }else{
                        tempo=0;
                        document.getElementById("immagine").innerHTML = "";  
                        setTimeout('cambia()',5000);
                    }                    
                }    
            }   
            cambia();            
        </script>
    </body>
</html>
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Ascolta ti assicuro che in questo momento ho escorgitato una cosa del genere che più o meno rassomiglia alla tua adesso te la posto :

HTML:
setInterval(function(){//intervallo totale pausa+esecuzione

action=setInterval(function(){
 ran = Math.floor(45 * Math.random());
    urlofimage = img[ran];
    elem = document.getElementById("pipistrello1").innerHTML = '<img src="' + urlofimage + '" />';



},3000)
setTimeout(function(){//quando fermare
elem = document.getElementById("pipistrello1").innerHTML = null;
clearTimeout(action)
},10000)

},20000)
cioè la funzione random con l'assegnazione dell'immagine avviene ogni 3 secondi, poi al decimo secondo per prima cosa assegno al div = pipistrello1 il valore null quindi nessuna immagine e interrompo la random per poi dopo farla riprendere al 20esimo secondo.

L'ho anche testata e l'immagine scompare per 10 sec per poi riprendere. E' più o meno quello che dicevi te ?

E poi mi dici dove andare a prendere guide davvero esaustive.... è umiliante scrivere in modo datato... :(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
E' più o meno quello che dicevi te ?
si piu o meno
.... è umiliante scrivere in modo datato
se copi e incolli un codice scritto nel 2001 non è umiliante per nessuno è solamente difficile modificarlo, a volte si fa prima a riscriverlo
E poi mi dici dove andare a prendere guide davvero esaustive
mai vista una, ho sempre cercato in rete saltando da un sito a l'altro
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Certo nel 90% dei casi copio ed incollo e lo adatto ma con sincerità non so dove trovare da qualche parte un corso sul nuovo modo di scrivere questi codici e neanche un buon corso di javascript... c'è ne sono a centinaia ma tutti con piccoli esempi :(

Se potete darmi un consiglio ve ne sarò grato. :)

E chiaramente ti ringrazio per le tue risposte, davvero... .
Domenico.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
non saprei
ho fatto questa prova:
Codice:
for(var i=0; i<45; i++) {
                var ran = Math.floor(45 * Math.random()); 
                document.write(" " + ran + " ");
            }
non mi sembra che si ripetano spesso
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
A me sembra che mi escano sempre gli stessi stemmi, vabbè tanto di certo non posso inventare un nuovo metodo, quindi taccio :)