2013-10-23 35 views
0

反正我搶每個使用jQuery或Javascript?..「搏擊俱樂部」的字符串,33主,休斯頓等等等等選擇類內<br>分離一系列字符串

<span class="cart_text2"> 
    Fight Club 
    <br> 
    33 main, 
    <br> 
    houston, 
    <br> 
    TX US 
    <br> 
    Phone Number: 777-888-9999 
    <br> 
    Email: [email protected] 
    </span> 
+1

如果可能的話,當然改變的標記更有效?那麼選擇很容易。 – user319940

+0

我同意@ user319940,實現更好的標記是迄今爲止最好的解決方案,因爲您的_HTML_將描述數據。 –

回答

0

獲取節點cart_text2類,然後用<br>分裂innerHTML,可能做一些微調空白

var node = document.getElementsByClassName('cart_text2')[0], 
    strs = node.innerHTML.split(/<br\s*\/?>/); 

然後說你有String.prototype.trim或某些聚填寫

strs = strs.map(function (e) {return e.trim();}); 

正則表達式我在split採用的是支付的<br><br/><br />

1

可能的情況下,選擇父的.childNodes,並遍歷集合。文本節點將有一個.nodeType3。然後使用.data屬性從節點獲取文本。

var elems = document.querySelector(".cart_text2").childNodes; 
var result = []; 

for (var i = 0, len = elems.length; i < len; i++) { 
    if (elems[i].nodeType === 3) 
     result.push(elems[i].data); 
} 

我爲了支持IE8使用.querySelector代替getElementsByClassName


使用.innerHTML將取決於瀏覽器的HTML特別呈現的br元素。遍歷DOM更安全。


使用jQuery,你可以做這樣的:

var result = $(".cart_text2").contents().map(function(i, node) { 
    if (node.nodeType === 3) 
     return node.data; 
}).toArray(); 
1

試試這個

var elements = document.getElementsByClassName('cart_text2')[0].innerHTML.split('<br>'); 
console.log(elements);