我对Javascript很新,但我有一个问题,我整天都在努力研究和解决,比如自己做,但我很困难。
我的代码很简单,我创建了5个函数,1个字母测试,1个数字测试,1个用于开放式括号,1个用于封闭式括号,第五个用于完整停止。这些函数返回true。
然后我创建了一个函数来调用所有这些函数,以便根据文本字符串中的内容生成数字输出。
回到顶端,我有一个字符串,我使用split创建了一个数组,将字符串中的每个字符放入数组中的单独地址。我的想法是使用for循环滚动数组并将类型输出到identity中,然后在列表中输出。
问题是它会循环一次然后崩溃,我无法找到问题,问题在于:
identity = isWhat(ModCompound[x],ModCompound[y]);
用//删除它,for循环运行正常。
我想知道为什么?这是什么错误?
代码:(原始表格)
<!DOCTYPE html>
<!--
Sjb 19/03/2015
-->
<html>
<head>
<title></title>
</head>
<body>
Chemicals
</br>
Compound: <input id="compound" value="NaCl.2(H20)">
<script>
var identity;
var x;
Compound = document.getElementById('compound').value;
ModCompound = Compound;
ModCompound = ModCompound.split('');
for (i = 0; i < Compound.length; i++){
x = i;
y = i;
document.write(i);
identity = isWhat(ModCompound[x],ModCompound[y]);
document.write(Math.random() + " : " + identity + "</p>");
}
ModCompound= ModCompound.join('');
// Custom Functions
function isWhat(n1,c1) //OUTPUT 1,2,9,0,8
{
if (isLetter(n1,c1) === true) {
return isWhat = 1;
//document.write = "L";
} //OUTPUT 1
if (isNumber(n1,c1) === true) {
return isWhat = 2;
//document.write = "N";
} //OUTPUT 2
if (isOpenBracket(n1,c1) === true){
return isWhat = 9;
//document.write("OB");
} //OUTPUT 9
if (isClosedBracket(n1,c1) === true) {
return isWhat = 0;
//document.write = "CB";
} //OUTPUT 0
if (isFullStop(n1,c1) === true) {
return isWhat = 8;
//document.write = "FS";
} //OUTPUT 8
}
function isNumber(n, c) //OUTPUT(s) TRUE
{
if (n >= 0 || n <= 9 ) {
//document.write(n + " N " + c + "</p>");
return isNumber = true;
}
}
function isLetter(n, c)
{
n = n.charCodeAt(0);
if (((n >= 65) && (n <= 90)) || ((n >= 97) && (n <= 122))) {
//document.write(n + " L " + c + "</p>");
return isLetter = true;
}
}
function isOpenBracket(n,c)
{
if (n === "(") {
//document.write(n + " OB " + c + "</p>");
return isOpenBracket = true;
}
}
function isClosedBracket(n,c)
{
if (n === ")") {
//document.write(n + " CB " + c + "</p>");
return isClosedBracket = true;
}
}
function isFullStop(n,c)
{
if (n === ".") {
//document.write(n + " F " + c + "</p>");
return isFullStop = true;
}
}
</script>
</body>
</html>
答案 0 :(得分:0)
您的退货声明应该是这样的:
return 1;
你写的是:
return isWhat = 1;
这是将变量isWhat
设置为1
,然后将其返回。 isWhat
是一个函数,因此设置为1
使得你无法调用它(因为现在它是一个数字,而不是一个函数)。此外,无需键入var===true
,因为如果变量为true,则var
将评估为true
并且if
语句将运行。