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

Parse two HTML String with JS - and convert one to Int

本文关键字:一个 Int 转换 字符串 JS 两个 HTML      更新时间:2023-09-26

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

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)。有什么帮助/想法吗?

你可以试试这个。。。

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

}

没有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/

试着用这种小提琴演奏吗?

基本上,这应该进入循环体,但用i替换[0],并添加所需的逻辑:

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

当然,只有当你100%确定价格格式将以价格值开始时才能这样做(正如金刚所注意到的那样,parseFloat会修剪数字后面的任何内容)。此外,您可能希望将其封装在try/catch块中(最好在解析时始终这样做)。

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