元音计数器在Pure js中不起作用

Vowel counter not working in Pure js

本文关键字:js 不起作用 Pure 计数器      更新时间:2023-09-26

我用纯js制作了一个元音计数器,但我无法使计数器正常工作。我似乎找不到我哪里出了问题,只需要一个小小的推动或例子来知道如何解决这个问题,如果可以的话。有人能提前帮我吗?谢谢。

这是我的HTML:

<h1> Vowel Counter </h1>
Please enter text for your vowel count:
<br>
<textarea id="text" rows="10" style="width: 100%;"></textarea>
<br>
<button onclick="countVowels();">Count Vowels</button>
<p id="result"></p>

这是我的Javascript:

function countVowels() {
    var text = document.getElementById("text").value;
    var arrayOfLetters = text.split("");
    var arrayOfVowels = ("AEIOU");
    // Set up our counters
    var countA = 0;
    var countE = 0;
    var countI = 0;
    var countO = 0;
    var countU = 0;
    // Output the results:
    document.getElementById("result").innerHTML = "";
    document.getElementById("result").innerHTML += "Total Letters: " + arrayOfLetters.length + "<br />";
    document.getElementById("result").innerHTML += "A's: " + arrayOfVowels.length + countA + "<br />";
    document.getElementById("result").innerHTML += "E's: " + arrayOfVowels.length +countE + "<br />";
    document.getElementById("result").innerHTML += "I's: " + arrayOfVowels.length +countI + "<br />";
    document.getElementById("result").innerHTML += "O's: " + arrayOfVowels.length +countO + "<br />";
    document.getElementById("result").innerHTML += "U's: " + arrayOfVowels.length +countU + "<br />";
} 

并且附上了我的jsfiddle:

http://jsfiddle.net/Matt1990/3Ckw2/43/

我建议使用正则表达式,而不是循环和许多if条件。除非您认为regex不是纯js,否则在上述解决方案中,代码的复杂性和可维护性都很差。

 var countA = text.match(/[Aa]/g).length;

这将给你直接计数。要查找maxval,请使用基本的排序算法来查找max,然后为其分配一个css样式的类。这不是一个需要解决的技术问题。

你是如何计算元音的?现在,它显示每个元音计数为50,因为arrayOfVowels.length=5,countA(例如)仅为0。你没有把任何数字加在一起,但你在字符串0上加了5,结果是"50"。

您根本没有计算元音的机制,这并不是说您的"元音计数器"不起作用。你正确地设置了所有内容,但未能完成文本并系统地计算元音。您可以通过自动使字母小写或大写来改进此代码,这样您就不必使用或运算符来检查这两种情况。我本可以做得那么快,但我太懒了。。。

这个元音计数器将工作:

function countVowels() {
var text = document.getElementById("text").value;
var arrayOfLetters = text.split("");
var arrayOfVowels = ("AEIOU");
// Set up our counters
var countA = 0;
var countE = 0;
var countI = 0;
var countO = 0;
var countU = 0;
for(i=0; i < arrayOfLetters.length; i++) {
    if (arrayOfLetters[i] == "A" || arrayOfLetters[i] == "a") {
        countA ++;
    }
    if (arrayOfLetters[i] == "E" || arrayOfLetters[i] == "e") {
        countE ++;
    }
    if (arrayOfLetters[i] == "I" || arrayOfLetters[i] == "i") {
        countI ++;
    }
    if (arrayOfLetters[i] == "O" || arrayOfLetters[i] == "o") {
        countO ++;
    }
    if (arrayOfLetters[i] == "U" || arrayOfLetters[i] == "u") {
        countU ++;
    }
}
// Output the results:
document.getElementById("result").innerHTML = "";
document.getElementById("result").innerHTML += "Total Letters: " + arrayOfLetters.length + "<br />";
document.getElementById("result").innerHTML += "A's: " + countA + "<br />";
document.getElementById("result").innerHTML += "E's: " + countE + "<br />";
document.getElementById("result").innerHTML += "I's: " + countI + "<br />";
document.getElementById("result").innerHTML += "O's: " + countO + "<br />";
document.getElementById("result").innerHTML += "U's: " + countU + "<br />";

}