2016-06-11 15 views
0

スパンタグ内の特定の単語を検索しようとしています。
<span><pre>です。
私は以下のコードから "6"を取得したいと思います。スパンタグ内の特定の値を見つける

<span class="infos">Scale: Ab Major 
Time Signature: 6/8 
Tempo: 80 
Suggested Strumming: DU,DU,DU,DU 
</span> 

私も同様に「80」を取得し、<input>に入れたいです。
TempoTime Signatureの値は変化し続けるので、単純な検索と検索は機能しませんでした。

私は非常に多くの方法を試してみましたが、何も私には役に立たないようです。

これは最も近いコードです。しかし、それは役に立たなかった。

<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

1つの汚れた正規表現は、あなたがそれを必要とする場合、テンポの後に署名の間および/、第二グループの数字を数字の第一グループを取得します:> '/署名:\ W(\ D + )\/\ d + \ nTempo:\ W(\ d +)/ ' – moped

+0

あなたはあなたがあなたが「*得たい*」と言っている' 6'で何をしたいかを言っていません。それで何かをする?それを置き換える、移動する、変数に格納する..? –

答えて

0

私は「拍子」の値を見つけるために、バールメールの答えを変更しました。

これはあなたに役立つと思います。

$("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>'); 
 
});
.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>

+0

これはまさに私が欲しかったものです。ありがとう! –

+0

私は自分のコンピュータにシンプルな.htmlファイルを作成し、このコードを貼り付け、Chromeでそのページを開いた。しかし何も起こっていない。デバッグコンソールにも何も表示されません。私が間違ったことを教えてください。 タグ

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>

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

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"]); 

このようにして、info spanのすべてのデータを取得できます。

また、同じのためJSFiddleの下に参照することができます。

https://jsfiddle.net/aman_chhabra/nvs16wr1/

関連する問題