Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算输入的元音?_Javascript_Html_Button_Input - Fatal编程技术网

Javascript 计算输入的元音?

Javascript 计算输入的元音?,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

嗨,我正在尝试使用javascript计算HTML中表单输入的元音,但目前没有成功

这是我的HTML

<!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);
};

看看其他答案,我认为这是最简单的解决方案

一行代码,不区分大小写。它在元音处拆分字符串并返回数组长度。为什么要让循环和开关语句变得更复杂

更新