我编写了这个函数(不起作用),它应该计算全局变量(paraText
)中的字母,然后将其插入到count中。我该如何解决这个问题?
这是一个学校项目,所以我必须遵守一些规则。我已经尝试了几乎所有的答案,但我无法让它工作:(也许如果你看看所有的代码,你可以看到我做错了。
"use strict";
var paraText = "";
var antalParagrafer = 0;
function addLetter(c) {
if(!paraText) {
addParagraph();
}
else { //add c to saved textnode
var tNod = document.createTextNode(c);
paraText.appendChild(tNod);
}
}
//function is called when enter is pressed
function addParagraph() {
/*create a new paragraph with related textnode
textnode is saved to the global textnodevariable
add paragraph to the div with id "output"
you also need to mark the paragraph with the class even/odd
depending on the class of the previous paragraph*/
var div = document.getElementById("output");
var nyParagraf = document.createElement("p");
div.appendChild(nyParagraf);
antalParagrafer += 1;
nyParagraf.className = (antalParagrafer % 2 === 0 ? 'even' : 'odd');
paraText = nyParagraf;
}
//function is called when count letters is pressed
function countLetters() {
var count=0;
for(var i = 0; i < paraText.length; i++) {
var c = paraText.charAt(i);
if (c >= 'a' && c <= 'z') count++;
}
return count;
}
答案 0 :(得分:9)
我只是删除非字母,然后使用剩下的长度:
var count = paraText.replace(/[^a-zA-Z]/g, '').length;
答案 1 :(得分:4)
你的功能在其他情况下工作正常(虽然它可能没有那么优雅),但是count = count ++
是错误的;要么使用
count++;
或
count = count + 1;
答案 2 :(得分:1)
语句count = count++
不会增加计数器,因为count++
的值是变量之前的变量,所以你增加变量,然后返回之前的值
使用简单比较比使用正则表达式为字符串中的每个字符提供更好的性能:
function countLetters() {
var count=0;
for(var i = 0; i < paraText.length; i++) {
var c = paraText.charAt(i);
if (c >= 'a' && c <= 'z') count++;
}
return count;
}