我目前正在解析第一个字符串,一切正常:
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 :(得分: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/