如果在下套管和修剪后不工作

时间:2017-10-17 20:11:29

标签: javascript html

我已经建立了一个具有解密功能和实验的网站,在实验中你有一个输入并检查了一些代码,我想让它变得更容易,所以我添加了一个。 toString()。toLowerCase()。trim 但是当我现在要检查是否匹配时,它只是说 var (所以第一个如果) 这是JS代码:

function Codes() {
  var DeInf = "No Public Developer Info yet."
  var Error = "By the time you've read this the page has closed itself already"
  var index = '<a href="index.html">Get to the Index!</a>'
  var Errore = "No recognised Code!"

  var B2 = document.getElementById("CodeInput").value;
  var A1 = B2.toString().toLowerCase().trim;

  if (A1 === 'devinfo'||'developerinfo') {
    document.getElementById("info").innerHTML = DeInf;
    }
else if (A1 === 'error'){
    document.getElementById("info").innerHTML = Error;
    close();
    }
else if (A1 === 'newtons pendulum'||'newton'||'pendulum') {
    document.getElementById("info").innerHTML = Newton;
    }
else if (A1 === 'binary') {
    document.getElementById("info").innerHTML = "11111100001";
    }
else if (A1 === 'index') {
    document.getElementById("info").innerHTML = index;
    }
    else if (A1 === 'randomnumber') {
    document.getElementById("info").innerHTML = Math.floor((Math.random() * 1000) + 1);
    }
else {
    document.getElementById("info").innerHTML = Errore;
    }
}

HTML:

<input id="CodeInput"  placeholder="Code" class="Input2"><br />
<button onClick="Codes();" id="Check" class="Exp-Button" >Check</button>

我已经尝试过搜索其他人是否有类似的问题并且找不到任何内容,我也尝试将变量分成4个

var A4 = document.getElementById("CodeInput").value;
var A3 = A4.toString();
var A2 = A3.toLowerCase();
var A1 = A2.trim;

2 个答案:

答案 0 :(得分:5)

您忘记了trim是一种方法,而不是财产:

.trim应为.trim()

此外,无需在.toString()上调用B2,因为B2是DOM元素的值,而DOM元素值始终是字符串。

此外,扫描文档中的元素会产生性能成本,因此如果您不止一次需要元素引用,请缓存第一次扫描的结果并将缓存版本用于其他扫描。

.innerHTML用于分配包含应解析的HTML的字符串。如果您要在元素上设置内容并且该内容不包含HTML,请使用textContent而不是innerHTML,因为这样可以节省解析HTML的字符串的性能成本。存在。

您指的是一个名为Newton的变量,但我看不到在任何地方声明的变量。是否在代码中声明了更高的范围,而您在此处未显示?

最后,由于您检查了许多可能值的相同内容(A1),因此 switch expression 优于if/then ||)上的尝试,它需要在运算符的两侧都有完整的表达式。你有:

if (A1 === 'devinfo'||'developerinfo')

只要developerinfo不是&#34; falsey&#34;值(0undefinedfalsenull或空字符串),它将始终转换为true,因此即使{{1} }不等于A1devinfo,代码执行将落入该真正的分支。代码是:

developerinfo

您的代码可以重写为:

if (A1 === 'devinfo'|| A1 === 'developerinfo')

答案 1 :(得分:-2)

var A1 = B2.toString().toLowerCase().replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');

有一些if条件不正确。像这样用,

if (A1 === 'devinfo' || A1 === 'developerinfo')