代码运行后,Html按钮停止工作

时间:2016-07-20 14:00:14

标签: javascript html

我正在用HTML和JavaScript制作游戏。我有一个按钮,用户按下该按钮以“运行”他们输入的命令。但是,在他们“连接”到ip之后按钮不再有效,控制台中没有错误。我该如何解决这个问题?

var ip = ["192.168.1.1", "192.168.1.2", "192.168.1.3", "192.168.1.4"]
var gip;
var log;
var compname;
var svirus;
var connected = false;

function runcmd() {
  var user = document.getElementById('code').value;
  if (user == 'clear') {
    l1.innerHTML = '';
    l2.innerHTML = '';
    l3.innerHTML = '';
    l4.innerHTML = '';
    l5.innerHTML = '';
    l6.innerHTML = '';
    l7.innerHTML = '';
    l8.innerHTML = '';
    l9.innerHTML = '';
    l10.innerHTML = '';
  };
  if (user == 'connect') {
    gip = prompt('Enter The Targets IP: ');
    for (var key in ip) {
      var user = document.getElementById('code').value;
      if (ip[key] == gip) {
        l1.innerHTML = 'Connecting to ' + gip;
        l2.innerHTML = 'Connected to ' + gip;
        connected = true;
        grant.play()
        l3.innerHTML = 'view bank';
        l4.innerHTML = 'upload [virus]';
        l5.innerHTML = 'disconnect [ip]';
        var user = document.getElementById('code').value;
        if (user == 'disconnect' + gip) {
          connected = false;
          l1.innerHTml = 'Disconnected Safely...';
        };
        if (user == 'view bank') {
          var pwrd = Math.floor(Math.random() * 10000);
          var nam = Math.floor(Math.random() * 10000);
          alert(pwrd);
          alert(nam);
          var uname = 'user' + nam;
          var user = prompt('Username: ');
          var pass = prompt('Password: ');
          if (user == uname && pass == pwrd) {
            console.log('hello')
          };
          if (user == 'upload') {
            svirus = prompt('Enter Virus: ');
            for (var key in boughtviruses) {
              if (boughtviruses[key] == svirus) {
                l1.innerHTML = 'Uploading ' + svirus;
                l2.innerHTML = 'Virus Uploaded';
              }
              else {
                alert("You Don't Have This Virus!");
              };
            };
          };
        };
      };
    };
  };
};
<span class="span" id="l1"></span><br />
<span class="span" id="l2"></span><br />
<span class="span" id="l3"></span><br />
<span class="span" id="l4"></span><br />
<span class="span" id="l5"></span><br />
<span class="span" id="l6"></span><br />
<span class="span" id="l7"></span><br />
<span class="span" id="l8"></span><br />
<span class="span" id="l9"></span><br />
<span class="span" id="l10"></span><br />
<span >C:\></span>
<input onclick="this.select()" id="code" class="inp" />
<button id="runcodeuser" onclick="runcmd()">Send Command</button>

4 个答案:

答案 0 :(得分:1)

嗯,在你的代码中只有两个&#34;命令&#34;实际上是可用的 - 清除连接

如果命令(即文本框的值)是 connect ,则浏览器将要求&#34;目标IP&#34;。然后它遍历在顶部声明的数组中的IP,并在每次迭代中再次将变量user设置为文本框值 - 但文本框仍将包含 connect ,还有user - 已声明变量,因此无需再次使用var关键字。

因为这个user == "view bank"例如永远不会评估为true。您必须重新构建代码才能使其按照您的意愿工作。

答案 1 :(得分:1)

您可以创建一个事件调度程序。每个可能的user输入都是一个单独的事件。 将代码分开以将每个事件处理成不同的函数。

例如:

function user_clear () { ... }
function user_connect () { ... }
function user_bank () { ... }
function user_upload () { ... }

function dispatch_event (user)
{
  switch (user)
  {
    case 'clear': user_clear (); break;
    case 'connect': user_connect (); break;
    case 'view bank': user_bank (); break;
    case 'upload': user_upload (); break;
    default: console.log ('dispatch_event: no such event: ' + user);
  }
}

然后从runcmd()调用它:

function runcmd() {
  var user = document.getElementById('code').value;
  dispatch_event (user);
}

并且在运行grant.play()之后:(在user_connnect()内部)

grant.play();
var user = document.getElementById('code').value;
dispatch_event (user);

答案 2 :(得分:0)

您的runcmd()函数似乎只有3个块:

var user...
if (user=="clear") { ... }
if (user=="connect") { ... }

其他所有内容都在最后一个块/行中。如果user=="connect"为真,则块执行,但user=="view bank"等永远不会是true

答案 3 :(得分:0)

grant.play()之后没有分号 - 并且此功能似乎无法在代码中的任何位置定义。

另外,对于它的价值,我在运行代码段时收到错误消息:

{
  "message": "Script error.",
  "filename": "",
  "lineno": 0,
  "colno": 0
}