2017-12-04 7 views
0

こんにちはみんなで最後のBRの前にテキストを取得します。私は、HTMLのdiv jqueryの

<div class="flexmls_connect__sr_address"> 
    <div class="flexmls_connect__ld_price">$9,000,000</div> 
    Km. 16.5 Carr. Barra de Navidad, Villa Armonia Estate 
    <br> 
    Puerto Vallarta, JA 
    <br>MLS# 11187 
    <br>//NEED THIS NUMBER---- >5 beds &nbsp;|&nbsp; //AND THIS NUMBER---- >8 baths &nbsp;|&nbsp; 11836 sqft 
    <br> 
</div> 

でこれを持っており、これはjqueryので

var baths = $(res).find('.flexmls_connect__sr_address').before('br').last().contents().filter(function() { 
     return this.nodeType == 3; 
    }).text(); 

は私がベッドや風呂を得る必要がある、とclearifyのためではありません私のHTMLコードは、私は非常に古いAPIから取得し、私はちょうどjqueryまたはjavascriptで値をneee、HTMLを変更することはできません。

:D

答えて

1

before()は、DOM挿入方法です。あなたがHTMLの例と同じフォーマットに従うならば、あなたは、各div.flexmls_connect__sr_addressブロックの内側のHTMLを選択し、でsplit()を使って、あなたの目標を達成することができ、次の

var specs = $('.flexmls_connect__sr_address').contents().filter(function() { 
 
    return this.nodeType == 3 && $(this).text().indexOf('beds')>-1; 
 
}).text().split('|').reduce(function(a,c){ 
 
    if(c.indexOf('beds')>-1){ 
 
     a.beds = /\d+/.exec(c)[0] 
 
    }else if(c.indexOf('baths')>-1){ 
 
     a.baths = /\d+/.exec(c)[0] 
 
    } 
 
    return a 
 
},{}); 
 

 
console.log(specs); 
 
console.log('Property has ', specs.baths, ' baths and ', specs.beds, ' beds');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="flexmls_connect__sr_address"> 
 
    <div class="flexmls_connect__ld_price">$9,000,000</div> 
 
    Km. 16.5 Carr. Barra de Navidad, Villa Armonia Estate 
 
    <br> 
 
    Puerto Vallarta, JA 
 
    <br>MLS# 11187 
 
    <br>5 beds &nbsp;|&nbsp; 8 baths &nbsp;|&nbsp; 11836 sqft 
 
    <br> 
 
</div>

+0

あなたはそれを手に入れました、多くのおかげでこれが成功しましたxD –

+0

それを処理しようとする前にテキストが存在することを確認するために微調整が必​​要です – charlietfl

0

あなたはテキストノードのコンテンツを見つける必要がある:私の答えとneccesaryないすべてmethosは歓迎されている私は、最後のタグBRの前にテキストを取得ですが、任意のヘルプは素晴らしいです、感謝のテーマの多くと最後を試してみてくださいこのサンプルでは//NEED THIS NUMBER---- >5 beds &nbsp;|&nbsp; //AND THIS NUMBER---- >8 baths &nbsp;|&nbsp; 11836 sqftです。その後、数字と|を除くすべての文字を削除してください。このような正規表現と文字:

var textNodeContent = '//NEED THIS NUMBER---- >5 beds &nbsp;|&nbsp; //AND THIS NUMBER---- >8 baths &nbsp;|&nbsp; 11836 sqft', 
stripped = textNodeContent.replace(/[^0-9\|]/g, ''); 
// the result will be 5|8|11836 
+0

問題は他のテキストにあります。私はexmpleの緯度、経度マップ、そしてこのように多くの数字を得ました。1250000088122095 | 6 | 1338544どうすればいいですか?必要があります:/ –

+0

'1250000088122095 | 6 | 1338544'のような結果はjavascriptの' split'関数で分割でき、最終結果は配列になります – SLDev

0

ような何かを行うことができます各<br>。あなたが必要とするテキストが常にそのリストの2番目の最後の項目になるだろう、これは順番にそのような各&nbsp;|&nbsp;split()ことができます...

$('.flexmls_connect__sr_address').each(function() { 
    // get innerHTML and split into array 
    var block = $(this).html().split('<br>'); 

    // split second-last line into array 
    var line = block[block.length - 2].split('&nbsp;|&nbsp;'); 

    // report to console 
    console.log(' beds:',line[0].trim()); 
    console.log('baths:',line[1].trim()); 
    console.log(' sqft:',line[2].trim()); 
    console.log('----'); 
}); 

としては、あなたが、その後に正規表現を使用することができ、elsewhereに言及しました必要に応じてlineの各項目の番号を取得してください。 I.E ..

ホープが役に立ちます。 :)

0

情報を仮定すると、第三の後にdivの中に「ブレイク」タグ提供されています(これを試してみてください「flexmls_connect__sr_address」:

document.getElementsByClassName('flexmls_connect__sr_address')[0].getElementsByTagName("br")[2].nextSibling.data.split("|"); 

はここ8 "、「5つのベッド」[あなたが得るだろうとレスポンスです"11836sqft↵"]