-3

jquery 如何查找、计算和打印到页面,在'<lineNo'调用的 div 中存在的出现次数,'dialogue'并且在不替换页面上所有文本的情况下这样做?

<div id="dialogue">
<div id="1">
 <lineNo1>1</lineNo1>) 
 <lineNo2>2</lineNo2>) 
 <lineNo3>3</lineNo3>) 
</div>

<div id="2">
 <lineNo1>1</lineNo1>) 
 <lineNo2>2</lineNo2>) 
 <lineNo3>3</lineNo3>) 
</div>
</div>

谢谢你。

4

3 回答 3

2

HTML

<div id="dialogue">
    <div id="1">
     <lineNo1>1</lineNo1>) 
     <lineNo2>2</lineNo2>) 
     <lineNo3>3</lineNo3>) 
    </div>

    <div id="2">
     <lineNo1>1</lineNo1>) 
     <lineNo2>2</lineNo2>) 
     <lineNo3>3</lineNo3>) 
    </div>

    <!-- display line no -->
    <div class="msg">You have <span class="count"></span> lines.</div>

</div>​ <!-- Missing this closing in question -->

jQuery

var count = 0;;
$('div[id^="dialogue"] div').each(function() {
    var pattern = new RegExp('<lineNo', 'ig'),
        match = $(this).html().match(pattern),
        len = match ? match.length : 0;
        count += len; 
});
$('.msg span.count').html(count);

​演示 ​</p>

于 2012-12-15T17:54:53.127 回答
1

要获取 div 中的文本,请使用 jQuery 选择器:$('.dialogue').text()

然后,您可以使用正则表达式获取所有出现的字符串:someString.match(/lineNo/g)

于 2012-12-15T17:47:27.097 回答
0

听起来您正在尝试使用document.write.

$("body").append("<div>" + $("#dialogue *").filter(function () {
   return this.nodeName.toUpperCase().indexOf('LINENO') > -1; 
}).length + "</div>");​

这只是创建一个新的 div 并将其附加到正文。它的内容是你想要的计数。请注意,这可能不适用于 IE8-,它以不寻常的方式处理未知节点。

于 2012-12-15T17:46:08.473 回答