一个简单的程序,用于查找字符串中不能正常工作的元音数量

krt*_*ush 0 javascript

我正在尝试使用JavaScript,我的浏览器拒绝执行我使用switch case函数编写的程序.目标是找到一个字符串中的元音数量(考虑所有都以小写字母输入)

当我点击"提交"按钮时,框中的文字消失但没有任何反应.警报"你好"也没有出现,所以我假设该功能甚至没有被执行.

   <html>
   <head>
   <script>
   function vow(form)
    {
     alert("hello");
     var a = new Array(10);
     a = form.t1.value;
     var flag = 0;
     var i;

     for(i=0;i<10;i++)
       {
     switch (a[i])
      {
       case 'a':
       flag++;
       break;

       case 'e':
       flag++;
       break;

       case 'i';
       flag++;
       break;

       case 'o';
       flag++;
       break;

       case 'u';
       flag++;
       break;
      }
      }
  alert(flag);  
  }
  </script>
  </head>

  <body>
  <form>

  <input type="text" name="t1">
  <input type="submit" value="SUBMIT" onClick="vow(this.form)"/>

  </form>
  </body>
  </html>
Run Code Online (Sandbox Code Playgroud)

Ale*_*der 8

你正在使用;而不是:.

case 'i';
      __^__
Run Code Online (Sandbox Code Playgroud)

同样的情况ou.

更新:

我还展示了一个(内存密集型)替代版本:

var count = input.match(/[aeiou]/gi).length;
Run Code Online (Sandbox Code Playgroud)

更新:

var vow = function(str) {
    var matches = str.match(/[aeiou]/gi);
    var count = matches ? matches.length : 0;
    alert("'" + str + "' contains " + count + " vowel(s)");
    return false;
}? ?
Run Code Online (Sandbox Code Playgroud)

<input type="submit" value="SUBMIT" onClick="return vow(this.form.t1.value)"/>
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到它.


Mic*_*uda 5

您可以更简单地做到这一点.例如,从输入中删除元音并检查与原始字符串相比的长度差异.

var count = input.length - input.replace(/[aeiou]/gi, '').length;
Run Code Online (Sandbox Code Playgroud)

编辑:甚至更简单,删除除元音之外的所有内容;-)

function vow(form) {
    alert(form.t1.value.replace(/[^aeiou]/gi, '').length);
}?
Run Code Online (Sandbox Code Playgroud)