Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript文本区域每行字符数_Javascript_Jquery_Textarea - Fatal编程技术网

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);
    }

完整的代码:

工作得很好,感谢您解释您所做的工作。一年后,我试图得到确切的结果,但不明白为什么左侧文本区域的计数器用逗号连接。我看不到,在代码中的什么地方会发生这种情况?@JonathanvanClute
tempArr
是一个数组,因此在最后一次
.val(tempArr)
调用中设置其内容时,自动转换为字符串必须将其连接起来。默认行为是用逗号连接它。您应该使用手动连接的数据(
.val(tempArr.join(“”)
)填充此文本区域。
content = content.split(" ").join("");
content = content.replace(/(.)(?=.*\1)/g, "");
count_no_repeat.push(content.length);