用JS解析两个HTML字符串 - 并将其转换为Int

时间:2014-10-11 18:19:42

标签: javascript parsing

我目前正在解析第一个字符串,一切正常:

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)。任何帮助/想法?

3 个答案:

答案 0 :(得分:0)

尝试使用this fiddle中的内容?

基本上,这应该放在你的循环体中,但用[0]替换i,并添加你需要的逻辑:

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

当然,只有当你100%确定价格格式将以价格价值开始时才会这样做(parseFloat将修剪任何跟踪数字的东西,就像金刚注意到的那样)。此外,您可能希望将其包装在try / catch块周围(最好在解析时始终执行此操作)。

请注意,通常情况下,你可能应该从某种API中获取这些值,而不仅仅是从这样的DOM元素中获取这些值,所以请确保这是你想要做的。

答案 1 :(得分:0)

你可以试试这个......

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

}

答案 2 :(得分: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/