javascript文本区域每行字符数
我试图计算文本区域中每行的字符数 我试着将这段代码改为计算音节,但没有成功。任何帮助都将不胜感激javascript文本区域每行字符数,javascript,jquery,textarea,Javascript,Jquery,Textarea,我试图计算文本区域中每行的字符数 我试着将这段代码改为计算音节,但没有成功。任何帮助都将不胜感激 函数$CharCount($input){ $(“[name=set\+$input+”]).keyup(函数(){ var arrayOfLines=$(“[name=set\+$input+”]).val().match(/[^\r\n]+/g); var tempArr=[]; var$内容; var-char; var$结果; 对于(变量i=0;i
函数$CharCount($input){
$(“[name=set\+$input+”]).keyup(函数(){
var arrayOfLines=$(“[name=set\+$input+”]).val().match(/[^\r\n]+/g);
var tempArr=[];
var$内容;
var-char;
var$结果;
对于(变量i=0;i
该.val()
导致此行出错:
$result = $content.val().length;
移除它会正确计算线长度(至少在计算区域中)
至于counter textarea bug,您只是把jQuery选择器弄错了。将元素set_a_音节\u计数
重命名为set_a_内容
还有一个问题-当textarea为空时,它会抛出一个错误,因为您正在检查一个空的regexp结果(null
,准确地说)。您只需防止在没有匹配行时计数要执行的代码:
if (arrayOfLines !== null) { ... counting code ... }
固定代码:
函数$CharCount($input){
$(“[name=set\+$input+”]).keyup(函数(){
var arrayOfLines=$(“[name=set\+$input+”]).val().match(/[^\r\n]+/g);
var tempArr=[];
var$内容;
var-char;
var$结果;
if(arrayOfLines!==null){
对于(变量i=0;i
我的建议是:
函数$count\u有多少个音节($input){
$(“[name=set\+$input+”]).keyup(函数(e){
var arrayOfLines=$(“[name=set\+$input+”]).val().match(/[^\r\n]+/g);
var tempArr=[];
var$charsPerLine;
对于(变量i=0;i
我将不胜感激
有什么帮助吗
总之,我的速度有点太慢了,但这里有一些代码,imo用更少的努力就能达到同样的效果
函数计数(){
var行=文档
.getElementById(“区域”)
价值
.split(“\n”);
var长度=[];
对于(变量i=0;i”;
长度。推(线宽);
}
}
计数
这是我的解决方案:
var lines = $(input).val().match(/[^\r\n]+/g);
var count = [];
var content;
for (var i = 0; i < lines.length; i++) {
content = lines[i].split(" ").join("");
count.push(content.length);
}
完整的代码:工作得很好,感谢您解释您所做的工作。一年后,我试图得到确切的结果,但不明白为什么左侧文本区域的计数器用逗号连接。我看不到,在代码中的什么地方会发生这种情况?@JonathanvanClutetempArr
是一个数组,因此在最后一次.val(tempArr)
调用中设置其内容时,自动转换为字符串必须将其连接起来。默认行为是用逗号连接它。您应该使用手动连接的数据(.val(tempArr.join(“”)
)填充此文本区域。
content = content.split(" ").join("");
content = content.replace(/(.)(?=.*\1)/g, "");
count_no_repeat.push(content.length);