Javascript - 计算锚标记的字符数

时间:2013-04-02 17:47:13

标签: javascript jquery

基本上我想创建一个函数来搜索字符串中的锚标记,当它找到一个时,计算其间的字符并返回该数字。我这样做是为了一个编辑textarea中字符数的编辑器,因为textarea有一个用户可以输入的限制,我不希望链接中的字符计入该总数。

如果我在textarea中有这个:

This is what it looks like here <a href="http://www.bmhl.com">Placeholder</a>.  Please click the link to go to the page.

锚之前有32个字符,中间有11个字符,后面有42个字符,总共85个字符。在锚标记中有34个字符,我不想用于计数。

希望这是有道理的。

5 个答案:

答案 0 :(得分:2)

为什么你只想剥离锚标签?您可能希望查看this question。这是一个修改后的答案,用于返回某些HTML代码的长度。

function plainTextLength(html) {
    var tmp = document.createElement("div");
    tmp.innerHTML = html;
    var txt = tmp.textContent||tmp.innerText;
    return txt.length;
}

这也适用于上面的示例。

答案 1 :(得分:0)

如果输入应为字符串:

function getLength (string) {
     return string.match(/<a[^>]+>([^<]+)<\/a>/)[1].length
} 

答案 2 :(得分:0)

不能完全确定您需要什么,但此函数会为您的示例文本返回11:

function count(textareaInput) {  
  var count = 0;  
  $(textareaInput).filter('a').each(function() { 
    count += $(this).text().length;
  });
  return count;
}

答案 3 :(得分:0)

您可以使用以下内容:

$('textarea').keyup(function() {
    $('#count').text( this.value.replace(/<\/?a\s*[^>]*>/g, '').length );
});

See working demo

答案 4 :(得分:-1)

var a = document.getElementById('link');
var b = a.outerHTML.length - a.innerHTML.length;

我没有测试它,但它可能有用。