我正在尝试使用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>
答案 0 :(得分:8)
您使用;
代替:
。
case 'i';
__^__
o
和u
的相同案例。
我还展示了一个(内存密集型)替代版本:
var count = input.match(/[aeiou]/gi).length;
var vow = function(str) {
var matches = str.match(/[aeiou]/gi);
var count = matches ? matches.length : 0;
alert("'" + str + "' contains " + count + " vowel(s)");
return false;
}
<input type="submit" value="SUBMIT" onClick="return vow(this.form.t1.value)"/>
答案 1 :(得分:5)
你可以做得更简单..例如从输入中删除元音,并检查与原始字符串相比的长度差异。
var count = input.length - input.replace(/[aeiou]/gi, '').length;
编辑:或者更简单,删除除元音之外的所有内容; - )
function vow(form) {
alert(form.t1.value.replace(/[^aeiou]/gi, '').length);
}
答案 2 :(得分:3)
程序的一个小改进版本:
function vow(form) {
var a = form.t1.value;
flag = 0;
for (var i = 0; i < a.length; i++) {
switch (a[i]) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
flag++;
break;
}
}
alert(flag);
}
但是这个任务可以更简单地处理:
function vow(str) {
return --(str.split(/[aeiou]/).length);
}
所以:vow("hello!")
- &gt; 2
答案 3 :(得分:2)
您可以将誓言方法简化为
function vow(form) {
a = form.t1.value;
var matches = a.toString().match(/[aeiou]/g);
if( matches != null){
alert(matches.length);
} else {
alert(0);
}
}
答案 4 :(得分:1)
您已使用
case 'i'; case 'o'; case 'u';
应该是
case 'i': case 'o': case 'u':
并在函数末尾使用return false,例如
function vow(form)
{
// code
return false;
}
并添加return
之类的
<input type="submit" value="SUBMIT" onClick="return vow(this.form)"/>
答案 5 :(得分:0)
[OP]当我点击“提交”按钮时,框中的文字消失但没有任何反应。警告“你好”也没有出现,所以我假设该功能甚至没有被执行。
您需要使用onSubmit事件而不是onClick处理程序,如下所示:
<input type="submit" value="SUBMIT" onSubmit ="vow(this.form)"/>