我正在尝试JavaScript,但是我的浏览器拒绝执行这个我用switch case函数编写的程序。目标是找出一个字符串中的元音数量(考虑所有输入都是小写的)
当我点击“提交”按钮时,框中的文本消失了,但什么也没有发生。警告"hello“也没有出现,所以我假设函数甚至没有被执行。
<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>发布于 2012-10-17 02:36:04
您正在使用;而不是:。
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)"/>You can see it here。
发布于 2012-10-17 02:36:37
你可以做得更简单..例如,从输入中删除元音,并检查与原始字符串的长度差异。
var count = input.length - input.replace(/[aeiou]/gi, '').length;EDIT:或者更简单,删除除元音之外的所有内容;-)
function vow(form) {
alert(form.t1.value.replace(/[^aeiou]/gi, '').length);
}发布于 2012-10-17 02:41:24
程序的一个小小的改进版本:
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);
}http://jsfiddle.net/b36D6/
但这项任务可以处理得更简单:
function vow(str) {
return --(str.split(/[aeiou]/).length);
}所以:vow("hello!") -> 2
https://stackoverflow.com/questions/12921195
复制相似问题