我试图在span标签内找到一个特定的单词
<span>
位于<pre>
内
我想得到&#34; 6&#34;从下面的代码。
<span class="infos">Scale: Ab Major
Time Signature: 6/8
Tempo: 80
Suggested Strumming: DU,DU,DU,DU
</span>
我也希望得到&#34; 80&#34;同样把它放进<input>
Tempo
和Time Signature
的值不断变化,因此简单的搜索和检索无效。
我在SO上尝试了很多方法,但似乎没有什么能帮助我。
这是最接近的代码。但它没有帮助。
<script>
$("span:contains('Tempo:')").html(function(_, html) {
return html.replace(/(Tempo:)/g, '<span class="tem">$1</span>');
});
</script>
<span class="infos">Scale: Ab Major
Time Signature: 6/8
Tempo: 80
Suggested Strumming: DU,DU,DU,DU
</span>
非常感谢任何帮助。
答案 0 :(得分:0)
您需要使用捕获组来获取变化的部分,而不是恒定的部分,因此您可以将变量部分复制到替换中的适当位置。
$("span:contains('Tempo:')").html(function(_, html) {
return html.replace(/Tempo: (\d+)/, '<span class="tem">Tempo: <input name="tempo" value="$1"></span>');
});
.infos {
white-space: pre;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="infos">Scale: Ab Major
Time Signature: 6/8
Tempo: 80
Suggested Strumming: DU,DU,DU,DU
</span>
答案 1 :(得分:0)
如果每个信息都在不同的行上,那么这是一个解决方案:
var infosList = $(".infos").text().split('\n');
var time = infosList[1].split(":")[1].trim().split("/");
//time : [6,8]
var tempo = infosList[2].split(":")[1].trim();
//tempo : 80
这里是一个JsFiddle:DEMO
答案 2 :(得分:0)
使用这种方式更好:
var formatted_data = new Array();;
var info_data = $(".infos").html().split("\n");
$.each( info_data, function( index, value ){
var data = value.split(":");
formatted_data[data[0]]=$.trim(data[1]);
});
$("#time_signature").html(formatted_data["Time Signature"]);
$("#tempo").html(formatted_data["Tempo"]);
这样您就可以检索信息范围内的所有数据。
你也可以参考下面的JSFiddle:
答案 3 :(得分:0)
我已经修改了Barmer的答案,以找到“时间签名”&#39;值。
我认为这可能对你有所帮助。
$("span.infos").html(function(_, html) {
var searchWord = 'Time Signature:';
var searchWordlen = searchWord.length;
var lastIndexofSearchWord = html.lastIndexOf(searchWord) + searchWordlen;
var timeSignature = html.substring(lastIndexofSearchWord, html.lastIndexOf("/"));
timeSignature = parseInt(timeSignature); //here is your value
alert(timeSignature);
return html.replace(/Tempo: (\d+)/, '<span class="tem">Tempo: <input name="tempo" value="$1"></span>');
});
&#13;
.infos {
white-space: pre;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="infos">Scale: Ab Major
Time Signature: 6/8
Tempo: 80
Suggested Strumming: DU,DU,DU,DU
</span>
&#13;