2011-02-19 74 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%完全防范。