我的任务是创建一个way循环,该循环计算用户写的句子中字母字符的数量。此功能只会计算字母字符的数量,没有特殊字符。我的问题是,当我添加特殊字符(包括数字)时,以一些随机给定的顺序(有时可以工作),它会使我的浏览器崩溃(它也会使您的浏览器崩溃,请小心!)。我不知道是什么原因引起的。
var chocolate = false;
var count = 0;
var characters = 0;
function letterCounter(){
var sentence = document.getElementById('sentence').value;
while(!chocolate){
if (count==sentence.length) {
var chocolate = true;
}
else if(sentence[count]=="a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"){
count++;
characters++;
}
else {
count++;
}
document.getElementById('replaceTwo').innerHTML = characters;
}
}
Function 2: letter count finder<br>
<textarea id="sentence"></textarea><br>
<button onclick="letterCounter()">Find letters</button>
<div id="replaceTwo"></div>
问题是变量 characters
, chocolate
和 count
已在功能之外声明,并且该函数在它们上运行。因此,如果输入中有特殊字符,则该函数进入之后的无限循环。
function letterCounter(){
var sentence = document.getElementById('sentence').value;
var chocolate = false;
var count = 0;
var characters = 0;
while(!chocolate){
if (count==sentence.length) {
chocolate = true;
}
else if(["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"].indexOf(sentence[count])!==-1){
count++;
characters++;
} else {
count++;
}
}
console.log(characters)
}
Function 2: letter count finder<br>
<textarea id="sentence"></textarea><br>
<button onclick="letterCounter()">Find letters</button>
<div id="replaceTwo"></div>
这不会崩溃并合并 @manuel-toto的修复。
这个
sentence[count]=="a","b","c",...
将无法正常工作。
您将必须将这些字母放入数组中检查该数组是否包含当前字母:
["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"].indexOf(sentence[count])!==-1
代码的问题是您在if
中声明了新变量chocolate
:
if (count==sentence.length) {
var chocolate = true;
}
这是一个工作解决方案,不会崩溃您的浏览器:)
var btn = document.getElementById('btn');
var sentence = document.getElementById('sentence');
var count = 0;
var re = /[a-z]/i;
btn.addEventListener('click', function() {
count = 0;
for (var i = 0; i < sentence.value.length; i++) {
if (re.test(sentence.value[i])) {
count++;
}
}
document.getElementById('replaceTwo').innerHTML = count;
});
<p>Function 2: letter count finder</p>
<textarea id="sentence"></textarea>
<button type="button" id="btn">Find letters</button>
<div id="replaceTwo"></div>