Vinnaren i pepparkakshustävlingen!
2017-10-20, 03:47
  #1
Avstängd
Mp3Kungs avatar
Hur stoppar jag myFunction med javascript?
Vill inte ha nån paus eller timer vill bara stoppa den direkt.
Kod:
function myFunction() 
Citera
2017-10-20, 07:19
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av Mp3Kung
Hur stoppar jag myFunction med javascript?
Vill inte ha nån paus eller timer vill bara stoppa den direkt.
Kod:
function myFunction() 
Du kan mig veterligen inte stoppa ett exekverande JavaScript utifrån, med mindre än att du har nån slags global variabel nånstans, kollar denna cg om den är true gör du return i den exekverande koden.

Misstänker dock att du gjort en tankevurpa här nånstans eftersom jag nog aldrig stött på behovet förut, vad är det du försöker göra egentligen?
Citera
2017-10-20, 07:51
  #3
Avstängd
Mp3Kungs avatar
Citat:
Ursprungligen postat av Proton
Du kan mig veterligen inte stoppa ett exekverande JavaScript utifrån, med mindre än att du har nån slags global variabel nånstans, kollar denna cg om den är true gör du return i den exekverande koden.

Misstänker dock att du gjort en tankevurpa här nånstans eftersom jag nog aldrig stött på behovet förut, vad är det du försöker göra egentligen?

Googlade lite verkar vara lite svårt det här. Går inte stoppa det bara så där behövs en timer av något slag eller annat.

Kan inte mycket om javascript alls därför frågar jag nybörjar frågor.

Fick hjälp med script i en annan tråd men stött på problem, för att scriptet fortsätter köra om och om igen. Jag vill att den ska köras om och om igen men att den stoppas på något sätt när rutan är unchecked.

Kod:
<script type="text/javascript">

    function 
myfunction(obj){
        if (
obj.checked)
        {
            
alert("checked");
            
otherFunction()
            
/// Javascript körs aka otherFunction.
        
}
        else
        {
            
alert("Unchecked");
            
otherFunction()
           
/// Här ska otherFunction stoppas.
        
}
    }
    function 
otherFunction() {
      
window.setInterval(function() {  
            
httpGetAsync('test.php', function(text) {  
               if (
document.getElementById("test1").innerHTML >= 1000) { 
                   
alert("Test 2");
               } 
            });  
      }, 
10000);
     }
</script>

<input type="checkbox" onclick="myfunction(this);" /> 
Citera
2017-10-20, 08:21
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av Mp3Kung
Googlade lite verkar vara lite svårt det här. Går inte stoppa det bara så där behövs en timer av något slag eller annat.

Kan inte mycket om javascript alls därför frågar jag nybörjar frågor.

Fick hjälp med script i en annan tråd men stött på problem, för att scriptet fortsätter köra om och om igen. Jag vill att den ska köras om och om igen men att den stoppas på något sätt när rutan är unchecked.

Kod:
<script type="text/javascript">

    function 
myfunction(obj){
        if (
obj.checked)
        {
            
alert("checked");
            
otherFunction()
            
/// Javascript körs aka otherFunction.
        
}
        else
        {
            
alert("Unchecked");
            
otherFunction()
           
/// Här ska otherFunction stoppas.
        
}
    }
    function 
otherFunction() {
      
window.setInterval(function() {  
            
httpGetAsync('test.php', function(text) {  
               if (
document.getElementById("test1").innerHTML >= 1000) { 
                   
alert("Test 2");
               } 
            });  
      }, 
10000);
     }
</script>

<input type="checkbox" onclick="myfunction(this);" /> 
Nåt sånt här:

Kod:
<script type="text/javascript">
var 
functionHandle;
    function 
myfunction(obj){
        if (
obj.checked)
        {
            
alert("checked");
            
otherFunction();
            
/// Javascript körs aka otherFunction.
        
}
        else
        {
            
alert("Unchecked");
            
clearTimeout(functionHandle);
        }
    }
    function 
otherFunction() {
      
functionHandle  window.setInterval(function() {  
            
httpGetAsync('test.php', function(text) {  
               if (
document.getElementById("test1").innerHTML >= 1000) { 
                   
alert("Test 2");
               } 
            });  
      }, 
10000);
     }
</script>

<input type="checkbox" onclick="myfunction(this);" /> 

Prova den.

https://www.w3schools.com/jsref/met_...eartimeout.asp
Citera
2017-10-20, 12:29
  #5
Avstängd
Mp3Kungs avatar
Kan inte testa din script just men om några timmar.

Jag kan nästan ingen javascript alls.
Tittade och tittade på din script och tänkte, jag måste fatta vad du har gjort. Tittar och jämför med gammla scriptet. Till slut kom jag på vad du har gjort tror jag.


Du tar helt enkelt bort loopen. Du tar bort 10000. Låter töntigt att jag kom på det men vi vanliga personer ser detta som kinesiska tecken.

Måste testa scriptet, ska sova lite först.

Men du kanske hinner svara innan jag vaknar igen.
Om nu tiden/loopen tas bort när det är unchecked kommer den startas igen när det är checked? Alltså på av på av.

Behöver som sagt att den stoppas men oxo startas när det ör checked.

Frågar nu så hinner kanske nån svara innan jag vaknar. Slipper fråga mitt i fredags natten.
Citera
2017-10-20, 12:46
  #6
Moderator
Protons avatar
Citat:
Ursprungligen postat av Mp3Kung
Kan inte testa din script just men om några timmar.

Jag kan nästan ingen javascript alls.
Tittade och tittade på din script och tänkte, jag måste fatta vad du har gjort. Tittar och jämför med gammla scriptet. Till slut kom jag på vad du har gjort tror jag.


Du tar helt enkelt bort loopen. Du tar bort 10000. Låter töntigt att jag kom på det men vi vanliga personer ser detta som kinesiska tecken.

Måste testa scriptet, ska sova lite först.

Men du kanske hinner svara innan jag vaknar igen.
Om nu tiden/loopen tas bort när det är unchecked kommer den startas igen när det är checked? Alltså på av på av.

Behöver som sagt att den stoppas men oxo startas när det ör checked.

Frågar nu så hinner kanske nån svara innan jag vaknar. Slipper fråga mitt i fredags natten.
Kolla länken jag klistrade in med så lär det framgå vad scriptet gör, men i sak har du rätt även om ingen loop ingår här, jag raderar timern helt enkelt.

Kollar du på vad ditt script gör när du kryssar i rutan kommer du se att timern ställs däri, vilket i teorin borde göra at alltihop startar som det ska igen.
Citera
2017-10-20, 21:11
  #7
Avstängd
Mp3Kungs avatar
Citat:
Ursprungligen postat av Proton
Nåt sånt här:

Kod:
<script type="text/javascript">
var 
functionHandle;
    function 
myfunction(obj){
        if (
obj.checked)
        {
            
alert("checked");
            
otherFunction();
            
/// Javascript körs aka otherFunction.
        
}
        else
        {
            
alert("Unchecked");
            
clearTimeout(functionHandle);
        }
    }
    function 
otherFunction() {
      
functionHandle  window.setInterval(function() {  
            
httpGetAsync('test.php', function(text) {  
               if (
document.getElementById("test1").innerHTML >= 1000) { 
                   
alert("Test 2");
               } 
            });  
      }, 
10000);
     }
</script>

<input type="checkbox" onclick="myfunction(this);" /> 

Prova den.

https://www.w3schools.com/jsref/met_...eartimeout.asp

Fungerade perfekt! Tackar!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback