2011-02-19 56 views
2

我需要一個JavaScript函數,將解析頁面的HTML源代碼作爲外部腳本被調用,檢索源中的任何美元金額,並設置最高美元金額爲JavaScript變量。例如,如果頁面包含文本「您的產品是$ 40.32,稅金是$ 4.50,您的總金額是$ 44.82」,則JS應該解析這些值並將$ 44.82設置爲「var total」作爲最高金額。可能?解析美元金額的HTML源代碼,然後設置最高金額作爲變量

+0

當然這是可能的。你試過什麼了?你想發佈一些代碼?你的問題不應該是理論上的問題,或者要求人們爲你編寫完整的解決方案。 – jmort253 2011-02-19 05:16:43

回答

0

謝謝基於我寫的這個,這是有效的提示。希望你或我的解決方案能夠幫助其他人:

var dochtml = document.getElementsByTagName('body')[0] .innerHTML;

dochtml = dochtml.replace(/(\ r \ n | \ n | \ r)/ gm,「」);

var price_array = new Array; var pattmatch = /(\$(([0-9]{0,1})?.[0-9]{1,2}))|(\$([1-9]{1}[0 ?-9] {0,2}([,] [0-9] {3})*)([0-9] {1,2}))/ GI; price_array = dochtml.match(pattmatch); (var i = 0; itotal ||!total){ var total = price_array [i];如果(price_array){ } }

document.write(total); }

0

看看這裏這個問題,它演示瞭如何從字符串中提取數字:Javascript extracting number from string

試試這個:

// get all content from page 
var content = document.body.innerHTML; 

// create an array of all dollar amounts in the content 
arrayNum = content.match(/\$[0-9]+\.[0-9]+/g); 

// display array of numbers 
console.info(arrayNum); 

var high = 0; 
for(var i = 0; i < arrayNum.length; i++) { 

    // remove the dollar sign and cast the string to a float 
    arrayNum[i] = parseFloat(arrayNum[i].substring(1)); 

    // get the high value - O(n) operation 
    high = ((arrayNum[i]) > high) ? arrayNum[i] : high; 
} 

alert("High value = " high); 
0

您可以從JavaScript通過抓取當前文檔的HTML抓取文檔的innerHtml,如下所示:

document.getElementsByTagName('html')[0].innerHTML 

然後,您可以用正則表達式抽出所有貨幣值,其中一些東西一樣:在所有的比賽,每次

((\$(([0-9]{0,1})?\.[0-9]{1,2}))|(\$([1-9]{1}[0-9]{0,2}([,][0-9]{3})*)(\.[0-9]{1,2})?)) 

只是環和電流的匹配比總價值,合計設定爲當前的比賽更大。

免責聲明:該正則表達式是從社區拉http://gskinner.com/RegExr/,我不能答應你它是100%完全防範。