在textarea val中使用带有HTML字符的find()

时间:2017-04-03 02:44:03

标签: javascript jquery html find

我有一个textarea,我想得到它的值,然后计算开始和结束div的数量。我在使用渲染的HMTL时遇到问题,即使它已被全部转义,我仍然会遇到这样的错误:Uncaught Error: Syntax error, unrecognized expression: &lt;div&gt;This is a test&lt;/div&gt;<div>This is a test</div>输入textarea。

我希望能够将HTML标记保留在内容中,即能够搜索与<div

相关联的&lt;div

HTML

<h3>Paste your code in here</h3>
<textarea name="code" id="code" cols="30" rows="10"></textarea>
<p>
    <a href="#" class="test-code-btn">Go for it!</a>
</p>

JS

$('.test-code-btn').on('click', function(){
    function escapeHtml(unsafe) {
        return unsafe
             .replace(/&/g, "&amp;")
             .replace(/</g, "&lt;")
             .replace(/>/g, "&gt;")
             .replace(/"/g, "&quot;")
             .replace(/'/g, "&#039;");
    }

    var res = escapeHtml($('#code').val());
    console.log('res = ' + res);

    var openDivs = $(res).find('&lt;div').length;
    var closeDivs = $(res).find('&lt;/div').length;

    console.log('openDivs: ' + openDivs + ', closeDivs: ' + closeDivs);
});

1 个答案:

答案 0 :(得分:1)

这可以让你开始正确!

适用于CodePen

var openCounter=0;
var closeCounter=0;

var raw = $('#code').val();
for(i=0;i<raw.length;i++){
  if( raw.charAt(i)=="<" ){
    if( raw.charAt(i+1)=="\/" ){
      //console.log("One close tag");
      closeCounter++;
    }else{
      //console.log("One open tag");
      openCounter++;
    }
  }
}
console.log(openCounter+" opening tags and "+closeCounter+" closing tags.");