2014-10-11 74 views
-2

我目前正在分析的第一個字符串已經和一切工作正常:解析兩個HTML字符串JS - 並轉換一個INT

var links = document.getElementsByTagName("a"); 
var element; 

function search() { 
    for (var i = 0; i < links.length; i++) { 
     element = links[i]; 
     var price = parseInt(element); 
     if (element.href.indexOf("http://www.myurl.com") == 0) { 
      //program goes here 
     } 
    } 
} 

然而,每一個超鏈接的(產品)已與另一個字符串價格(在同一個div元素中)。這應該是這樣的:

<span class="price_table_value"> 
      Pricetag:<br> 
      <span style="color:white">239,--€ </span> 
</span> 

我希望以某種方式解析過,並使用parseInt函數()做一個Integer出來。

我已經考慮了一個小時,找不到一個好的解決方案(即時通訊仍然開始學習JS)。任何幫助/想法?

+0

究竟是怎麼與'span'標籤相關的'a'? ('span'包裝在'a'中?) – 2014-10-11 18:26:45

+0

對於帶小數點的數字,就像價格一樣,最好使用'parseFloat'來保留這個小數(除非你當然不想) – myfunkyside 2014-10-11 18:29:31

+0

我基本上只想首先檢查正確的鏈接,我在給定的代碼中執行該操作,然後,如果找到感興趣的項目,我希望能夠將其價格與我的最大值進行比較,並通過另一個運行:if(parseInt(right_code_goes_here )<= 199){ //執行動作 }' 這基本上就是我要找的東西。 – xqz313 2014-10-11 18:30:44

回答

0

試着去用this fiddle這樣的東西?

基本上,這應該在你的循環體,但與i更換[0],並添加你需要的邏輯:

var rawPrice = $(element).children('.price_table_value').children('span').text(); 
var price = parseFloat(rawPrice); 

當然只是如果你是100%確定的價格格式做將從價格價值開始(parseFloat將削減數量的任何數字,就像金剛注意到的那樣)。此外,您可能想要將其封裝在try/catch塊中(並且最好在解析時始終執行它)。

請注意,一般來說,您可能應該從某種API獲取這些值,而不僅僅是像這樣從DOM元素中獲取這些值,所以請確保這是您想要的。

+1

如果字符串以數字開頭,那麼'parseFloat'將自動修剪結束非數字字符串並返回正確的數字,因此不需要使用split。看到這個演示http:// jsfiddle。net/L9r89bjw/ – 2014-10-11 18:40:26

+0

謝謝,你當然是對的,我忽略了這一點。更新了答案。 – wap300 2014-10-11 18:42:28

+0

好吧,基本上我知道如何使用該元素,我唯一的問題是字符串不以數字開頭......所以'parseInt()'或'parseFloat()'將返回NaN。 任何解決方法/想法? – xqz313 2014-10-11 18:48:12

0

你可以試試這個...

function search() { 
for (var i = 0; i < links.length; i++) { 
    element = links[i]; 
    var price =parseInt($(".price_table_value").value); 
} 

}

0

沒有jQuery的只是另一個例子:

var priceHolder = Array.prototype.slice.call(document.querySelectorAll(".price_table_value span")); 
priceHolder.forEach(function(item) { 
    var price = /([0-9]+[.0-9]?)/.test(item.innerHTML) ? parseFloat(RegExp.$1) : 0; 
    console.log(price); 
}); 

這裏是工作的jsfiddle: http://jsfiddle.net/zono/9gL1vw0e/9/

+0

編輯asnwer 。也將處理浮點數。 – 2014-10-11 18:54:40

相關問題