【问题标题】:Function call using a for loop to cycle through array not working, Help please使用for循环循环遍历数组的函数调用不起作用,请帮助
【发布时间】:2015-03-19 23:07:02
【问题描述】:

我对 Javascript 很陌生,但是我有一个问题,我花了一整天的时间来研究和解决,想自己做,但我很卡住。

我的代码很简单,我创建了 5 个函数,1 个测试字母,1 个测试数字,1 个用于开括号,1 个用于闭括号,第五个是句号。这些函数返回 true。

然后,我创建了一个函数,在需要时调用所有这些函数,以根据文本字符串中的内容生成数字输出。

回到顶部,我有一个字符串,我使用 split 创建了一个数组,将字符串中的每个字符放入数组中的单独地址中。这个想法是我使用一个 for 循环来滚动数组并将类型输出到标识中,然后在列表中输出。

问题是它会执行一次循环然后崩溃,我找不到问题,问题出在以下行:

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>

【问题讨论】:

    标签: javascript arrays function for-loop dynamic


    【解决方案1】:

    你的返回语句应该是这样的:

    return 1;
    

    你正在写这个:

    return isWhat = 1;
    

    这是将变量isWhat 设置为1,然后返回它。不过,isWhat 是一个函数,因此将其设置为 1 会使您无法调用它(因为现在它是一个数字,而不是一个函数)。此外,无需输入var===true,因为如果变量为真,则var 将评估为true 并且if 语句将运行。

    【讨论】:

    • 原来如此简单的事情真烦人。非常感谢,我会继续加油的。尴尬了多久我搞砸了那个!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    相关资源
    最近更新 更多