我在纯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:
答案 0 :(得分:0)
你怎么算元音? 现在它为每个元音计数显示50,因为arrayOfVowels.length = 5和countA(例如),只是0.你不是在一起添加任何数字,但是你要在字符串0中加5这导致&#34; 50&#34;。
答案 1 :(得分:0)
你根本没有机会来计算元音,这并不是说你的“元音计数器”不起作用。您正确设置了所有内容,但未能通过文本处理并系统地计算元音。您可以通过自动将字母设置为大写或小写来改进此代码,因此您不必使用或运算符来检查这两种情况。我可以做得那么快,但我太懒了......
这个元音计数器将起作用:
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 />";
}
答案 2 :(得分:0)
我建议使用正则表达式而不是循环,如果条件那么多。除非你认为正则表达式不是纯粹的js,否则代码的复杂性和可维护性在上述解决方案中都是不好的。
var countA = text.match(/[Aa]/g).length;
这将直接计算。要查找maxval,请使用基本排序算法查找max,然后为其分配css样式类。这不是一个需要解决的技术问题。