2013-04-23 78 views
0
<div class="CurrencyQuote"> 


<div class="column"> 
    <div class="form-label">Pair: </div><div>BUX/TIX</div> 
    <div class="form-label padding-top">Spread: </div><div>113</div> 
</div> 
<div class="column"> 
    <div class="form-label">Rate: </div><div>10.159/10.272</div> 
    <div class="form-label padding-top">High/Low: </div><div>115</div> 
</div> 

</div> 

我想獲得值113和值115,但是如何在沒有ID的情況下在javascript中執行此操作?我無法更改HTML,我需要分別獲取這兩個值,謝謝。Javascript:無身份證獲得價值

回答

0
var query = document.querySelectorAll('.column > .form-label'); 
for(var i=0,l=query.length;i<l;++i){ 
    if(query[i].innerHTML == 'Spread: ' 
    || query[i].innerHTML == 'High/Low: ' 
    ) console.log(query[i].nextElementSibling.innerHTML) 
} 
+2

'nextElementSibling'還沒有被廣泛支持。 – 2013-04-23 10:15:55

+0

@Jack MDN不會列出任何兼容性表。 – 2013-04-23 10:19:31

+1

@JanDvorak這不說多少:)它是[IE9 +](http://msdn.microsoft.com/en-sg/library/ie/ff974796(v = vs.85).aspx)。 – 2013-04-23 10:27:18

2

您可以使用querySelectorAll(),建立一個獨特的路徑,使用CSS選擇你這樣的元素:

var els = document.querySelectorAll('.column .form-label.padding-top ~ div'); 

for(var i=els.length; i--;) { 
    console.log(els[i].innerHTML); 
} 


爲了讓所有的jQuery的球迷也喜歡的:

$('.column .form-label.padding-top ~ div').each(function() { console.log(this.text()); }); 

+0

它可以分別得到它? – user2276965 2013-04-23 10:04:33

+0

@ user2276965「seperatly」是什麼意思?而不是'console.log()',你可以單獨將值轉發給你喜歡的任何函數或代碼。 – Sirko 2013-04-23 10:06:53

+0

我的意思是,是否有可能只獲得1的價值? – user2276965 2013-04-23 10:09:48

0

有了JQuery你可以做到像

$(document).ready(function(){ 

    $(".padding-top").each(function(){ 
    alert($(this).next().html()); 
    }); 

}); 

http://jsfiddle.net/WYSd4/

+1

沒有人說jQuery可用... – 2013-04-23 10:16:56

0

這應該是任何種類的瀏覽器兼容漂亮;它會搜索所有元素與column類,然後查找最後<div>孩子:

var columns = document.getElementsByClassName('column'), 
values = []; 

for (var i = 0, n = columns.length; i != n; ++i) { 
    var node = columns[i].lastChild; 
    // find last div child 
    while (node && node.nodeName != 'DIV') { 
    node = node.previousSibling; 
    } 
    if (node) { 
    values.push(node.textContent || node.innerText || ''); 
    } 
} 

console.log(values);