2017-07-23 4 views
0

Ich habe Probleme mit einem Power-Button, der zwei verschiedene CGI-Skripte ausführen soll, wenn er gedrückt wird.Alternative CGI-Skripte auf Knopfdruck

Ich habe einige Code wie so (ich habe den Code zwischen <main> Tags abgeschnitten): -

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
</head> 
<body class="site"> 
<main> 
<button href="#" class="buttonb" onclick="onoff()"><img class="on-button" src="images/power.png" alt="ON"></button> 
</main> 
<script> 
var isOn=false; 
function onoff() 
{ 
    if(isOn) 
{ 
    window.location.href="/cgi-bin/turnon.pl"; 
    var isOn=true; 
}else 
{ 
    window.location.href="/cgi-bin/turnoff.pl"; 
    var isOn=false; 
} 
} 
</script> 
</body> 
</html> 

ich einige CSS-Formatierung Dinge so ist es besser zu aussieht.

Aus irgendeinem Grund, egal was ich tue, kann ich nur die else Option bekommen, auf jedem Knopfdruck zu laufen. dh. Es führt nur das Off-Skript aus. Die einzelnen Skripte tun, was beabsichtigt ist, wenn sie von der Konsole aus ausgeführt werden.

Kann jemand etwas Licht auf das werfen, was vor sich geht, oder vielleicht einen anderen Weg vorschlagen, dasselbe zu erreichen? Ich bin ein Neuling auf diesem Zeug, wenn das einen Unterschied macht

Dank Steve

Antwort

0

Sie eine lokale Variable definieren isOn statt den Wert der globalen Variablen isOn Einstellung.

Die Logik ist auch falsch, wo isOn als false zunächst

<button href="" class="buttonb" onclick="onoff()"><img class="on-button" src="" alt="ON"></button> 
 
<script> 
 
    var isOn = false; 
 

 
    function onoff() { 
 
    if (!isOn) { 
 
     isOn = true; 
 
     console.log(isOn) 
 
    } else { 
 
     isOn = false; 
 
     console.log(isOn) 
 
    } 
 
    } 
 
</script>
definiert ist

+0

Vielen Dank für das - einige Fortschritte :) es scheint, dass ich doppelt so müssen Sie auf die zweiten Mal hin- und herzuschalten Das ist ein bisschen seltsam. Irgendwelche Ideen –

+0

@SteveW Sie müssen nicht doppelt klicken, hier. Jeder Klick schaltet den 'Boole'-Wert um, wie in Stacknippets gezeigt – guest271314

+0

Ich muss etwas verpassen? Ich kann nicht zwischen den beiden Skripten wechseln. 'code'var isOn = false; Funktion onoff() { if (! IsOn) \t { isOn = true; console.log (! IsOn); window.location.href = "/ cgi-bin/ToshibaACPWROFF.pl"; \t} sonst { isOn = false; console.log (IsOn); window.location.href = "/ cgi-bin/ToshibaACPWRON.pl"; } } 'Code' Die zwei Perl-Skripte funktionieren gut auf ihren eigenen Tasten –