我正在用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>
答案 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
}