我已经建立了一个具有解密功能和实验的网站,在实验中你有一个输入并检查了一些代码,我想让它变得更容易,所以我添加了一个。 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;
答案 0 :(得分:5)
您忘记了trim
是一种方法,而不是财产:
.trim
应为.trim()
此外,无需在.toString()
上调用B2
,因为B2
是DOM元素的值,而DOM元素值始终是字符串。
此外,扫描文档中的元素会产生性能成本,因此如果您不止一次需要元素引用,请缓存第一次扫描的结果并将缓存版本用于其他扫描。
.innerHTML
用于分配包含应解析的HTML的字符串。如果您要在元素上设置内容并且该内容不包含HTML,请使用textContent
而不是innerHTML
,因为这样可以节省解析HTML的字符串的性能成本。存在。
您指的是一个名为Newton
的变量,但我看不到在任何地方声明的变量。是否在代码中声明了更高的范围,而您在此处未显示?
最后,由于您检查了许多可能值的相同内容(A1
),因此 switch
expression 优于if/then
1}}可读性和性能。与此相关的是您在逻辑OR(||
)上的尝试,它需要在运算符的两侧都有完整的表达式。你有:
if (A1 === 'devinfo'||'developerinfo')
只要developerinfo
不是&#34; falsey&#34;值(0
,undefined
,false
,null
或空字符串),它将始终转换为true
,因此即使{{1} }不等于A1
或devinfo
,代码执行将落入该真正的分支。代码是:
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')