javascript - 我如何获得文本所属的跨度类ID?

标签 javascript jquery

HTML(内容可编辑的 div)

<div id="board">
   <div>int main<span class="openParen bm1">(</span><span class="closeParen bm1">)</span>{</div>
   <div>if<span class="openParen bm2">(</span> <span class="openParen bm3">(</span>x>1<span class="closeParen bm3">)</span> && <span class="openParen bm4">(</span>x<10<span class="closeParen bm4">)</span> <span class="closeParen bm2">)</span></div>
   <div>statement;</div>
   <div>}</div>
</div>

我对行使用 xloop,对每行内的字符使用 yloop。

1.) 我如何才能获得第二个 ( (xloop:1 yloop:7) w/c 的 span classbm2

2.)我如何获得bm2之间的span,我将循环它们中的每一个并将span的文本存储在数组中

JS

for( var x=0; x<$('#board > div ').size(); x++ ){
    var inlineDiv_num_text = $('#board > div ').eq(x).text();
    for( var y=0; y<$('#board > div ').eq(x).text().length; y++){

         kword_search = kword_search + inlineDiv_num_text.charAt(y);
         // i will detect the target paren here
          if(/(if|while|for)\s*\($/.test(kword_search)){
            //know w/c span the ( belongs to
            //get the bm span inside of it
         }
    }
}

目标:将 bm 分组存储在数组中

 array[0] = ( (x>1) && (x<10) )
 array[1] = (x>1)
 array[2] = (x<10)

最佳答案

我相信这回答了您的第一个问题和第二个问题。

它为您提供“bm2”类的“openParen”和“closeParen”内的跨度,并将文本存储在数组中。 (这仅捕获括号,因为只有括号位于跨度内。)

var open = $('span[class="openParen bm2"]')
var spans = open.nextUntil('span[class="closeParen bm2"]')
var inside = []
$.each(spans, function(i, span){
    inside.push($(span).html())
})
alert(inside.join('-'))

示例如下:jsFiddle

编辑

不确定如何“在跨度标记之间”执行操作,我首先获取父 div 元素的 html,然后使用正则表达式传递跨度:

var allcontent = $('span[class="openParen bm2"]').parent().html()
var betweenSpan = allcontent.split(/<span class="openParen bm2">[^<]*<\/span>|<span class="closeParen bm2">[^<]*<\/span>/)[1]
var valuesArray = betweenSpan.split(/<[^>]*>/)

给你js数组:

[" ", "(", "x&gt;1", ")", " &amp;&amp; ", "(", "x&lt;10", ")", " "]

示例如下:jsFiddle

绝对不漂亮。

更好的解决方案是重新考虑 html 标记的结构(即将您想要捕获的值放入某些标记中!)

无论如何,够了,我就交给你了。

关于javascript - 我如何获得文本所属的跨度类ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18581703/

相关文章:

javascript - 将多个 Typescript 文件编译为一个 javascript 文件

javascript - XML 到 Javascript/Jquery 可读格式

javascript - 在 .append 之后更改属性

jquery - 将 ViewModel 对象作为 Json 对象传递给 View

javascript - 如何查找子字符串与哪个值匹配

javascript - 集成 Virtualscroll.js

jquery - 使用 HTML5 创建接受复选框

javascript - JS测量ajax完成时间

javascript - 防止标签在 URL 上重定向

javascript - Material-UI List 作为 Card 的子项,在主展开时触发所有 onClick