Javascript 计算输入的元音?
嗨,我正在尝试使用javascript计算HTML中表单输入的元音,但目前没有成功 这是我的HTMLJavascript 计算输入的元音?,javascript,html,button,input,Javascript,Html,Button,Input,嗨,我正在尝试使用javascript计算HTML中表单输入的元音,但目前没有成功 这是我的HTML <!doctype html> <html> <head> <script src='p3-vowels.js'></script> </head> <body> <form action="demo_form.asp"> Phrase: <input type="tex
<!doctype html>
<html>
<head>
<script src='p3-vowels.js'></script>
</head>
<body>
<form action="demo_form.asp">
Phrase: <input type="text" id = "input1" name="CountVowels" value="Put Phrase Here"><br>
<input type="button" id = "btn1" value="Check for Vowels">
</form>
</body>
</html>
短语:
这是我的javascript
function vow(form){
var a = form.CountVowels.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 init(){
var button1 = document.getElementById("btn1")
button1.onclick = vow;
}
window.onload = init;
功能誓言(表单){
var a=form.CountVowels.value;
flag=0;
对于(变量i=0;i
将switch语句替换为
if(vowels.indexof(a[i]) > -1)
所以
第一种方法比较简单,因为基本上是检查元音数组中是否存在字母。将switch语句替换为
if(vowels.indexof(a[i]) > -1)
所以
第一种方法比较简单,因为基本上是检查元音数组中是否存在字母。两个问题:
1) 你在每个病例陈述后都会漏掉冒号。也就是说,它应该是
案例“a”:
案例b:
等
不是
2) 您似乎假设单击事件将按钮所在的表单传递给函数vow
。没有
只要改变这个:
function vow(form){
var a = form.CountVowels.value;
致:
此外,您应该在控制台窗口打开的情况下进行编程,以查看JS错误。你会看到这两个问题 两个问题:
1) 你在每个病例陈述后都会漏掉冒号。也就是说,它应该是
案例“a”:
案例b:
等
不是
2) 您似乎假设单击事件将按钮所在的表单传递给函数vow
。没有
只要改变这个:
function vow(form){
var a = form.CountVowels.value;
致:
此外,您应该在控制台窗口打开的情况下进行编程,以查看JS错误。你会看到这两个问题 函数的
vow
要求将表单作为参数,但您没有传递它。给你的表格一个ID,这样你就可以查找并传递它
button1.onclick = function() {
vow(document.getElementById('demo_form'));
};
功能誓言(表单){
var a=form.CountVowels.value;
flag=0;
对于(变量i=0;i
短语:
函数要求表单作为参数,但您没有传递它。给你的表格一个ID,这样你就可以查找并传递它
button1.onclick = function() {
vow(document.getElementById('demo_form'));
};
功能誓言(表单){
var a=form.CountVowels.value;
flag=0;
对于(变量i=0;i
短语:
其他答案的另一个选项是使用正则表达式。这不一定更容易理解,也不一定特别有效,但我把它作为一种选择。(这也继续证明了一句谚语:给100个程序员一个问题去解决,你就会得到100个解决方案)
javascript中使用的以下表达式将匹配所有元音,您可以使用返回数组查看有多少元音
/[aeiou]/ig
i
使其不区分大小写,而g
表示全局,因此它将拾取多次
这里是它的行动
功能誓言(表单){
var a=form.CountVowels.value;
var matches=a.match(/[aeiou]/ig);
var标志=0;
如果(匹配!=null)
flag=matches.length;
警报(旗帜);
}
函数init(){
var button1=document.getElementById(“btn1”)
button1.onclick=function(){vow(document.getElementById(“myform”);}
}
window.onload=init代码>
短语:
其他答案的另一个选项是使用正则表达式。这不一定更容易理解,也不一定特别有效,但我把它作为一种选择。(这也继续证明了一句谚语:给100个程序员一个问题去解决,你就会得到100个解决方案)
javascript中使用的以下表达式将匹配所有元音,您可以使用返回数组查看有多少元音
/[aeiou]/ig
i
使其不区分大小写,而g
表示全局,因此它将拾取多次
这里是它的行动
功能誓言(表单){
var a=form.CountVowels.value;
var matches=a.match(/[aeiou]/ig);
var标志=0;
如果(匹配!=null)
flag=matches.length;
警报(旗帜);
}
函数init(){
var button1=document.getElementById(“btn1”)
button1.onclick=function(){vow(document.getElementById(“myform”);}
}
window.onload=init代码>
短语:
为了提供更具可读性和简洁的解决方案,您可以将计算元音视为将字符减少为单个数字
我们可以通过将输入字符串减少到元音数来实现这一点,如下所示:
var countVowels = function countVowels(input) {
return input.split('').reduce(function (a, c) {
return a + ('aeiou'.indexOf(c) > -1);
}, 0);
};
为了提供更具可读性和简洁的解决方案,您可以将计算元音视为将字符减少为单个数字
我们可以通过将输入字符串减少到元音数来实现这一点,如下所示:
var countVowels = function countVowels(input) {
return input.split('').reduce(function (a, c) {
return a + ('aeiou'.indexOf(c) > -1);
}, 0);
};
看看其他答案,我认为这是最简单的解决方案
一行代码,不区分大小写。它在元音处拆分字符串并返回数组长度。为什么要让循环和开关语句变得更复杂
更新