javascript textarea行数

时间:2011-06-16 08:52:29

标签: javascript opera

我需要计算textarea中的所有行。 我的代码:

function textareaCurLineNum(obj)
{
    return obj.value.split(/[\r\n]/g).length;
}

在Firefox和Chrome中它运行良好。 在Opera中,它还会返回一个。

我试试这个:

function textareaCurLineNum(obj)
{
    if (!/Opera/.test(navigator.userAgent)){
        return obj.value.split(/[\r\n]/g).length;
    } else {
        return obj.value.split(/[\r\n]/g).length-1;
    }
}

现在,如果lines = 3,则opera返回4,4行 - 6,5行 - 8。 哪里有问题?

2 个答案:

答案 0 :(得分:3)

方括号包含符号集,而不是序列。在正则表达式中用\ n分割。

function textareaCurLineNum(obj)
{
    if (!/Opera/.test(navigator.userAgent)){
        return obj.value.split(/\n/g).length;
    } else {
        return obj.value.split(/\n/g).length-1;
    }
}

答案 1 :(得分:1)

尝试仅在\n上进行拆分。你写它的方式 - 如果我有:

first line \r\n
second line

此拆分将返回3,因为它将\r\n之间的虚无作为一行计算。

更强大的解决方案是首先将所有\r\n(胜利)和\r(mac)替换为\n,然后在\n上拆分,从而对文字进行规范化