首先,我有一些使用JavaScript的经验,但主要是使用客户端脚本编写程序而不是Web envoirement中的JavaScript。
我要做的是获取并替换此类中的vlaue:
<div class="detailPrice" style="float:left;width:180px"> € 20,90* </div>
每个页面的值都会发生变化。所以我无法搜索这个特定的值。 当我得到值时,我想将它分配给变量,如
price = 20.9
对它做一些数学计算,然后用旧的值替换我的新值。
提前感谢您提供任何帮助。
答案 0 :(得分:1)
所以我在javascript中写了这个小函数,为你做了这个。这是它的jsBin。
function test(d){
price=d.innerHTML; //grabs the text that's inside your div
price = parseInt(price.substring(2)); //skips the euro sign and converts to int
newPrice=price+5; // does some math with the price
d.innerHTML='€ ' + newPrice; // replaces the text within that div
}
我这样做,当你点击价格时,这个函数被调用。如果你看一下JSBin,它会更有意义。
这是您可以执行此操作的众多方法之一。另一种方法是使用名为prototype的javascript框架。该框架有一个名为update的函数,其工作方式如下:
<div id="fruits">carrot, eggplant and cucumber</div>
Passing a regular string:
$('fruits').update('kiwi, banana and apple');
// -> HTMLElement
$('fruits').innerHTML
// -> 'kiwi, banana and apple'
再次。还有其他方法可以做到这一点。你只需要寻找它们。希望这可以帮助。
答案 1 :(得分:1)
如果您非常确定格式,请使用querySelectorAll()
获取div并使用正则表达式提取价格。
下面的正则表达式考虑了常见的欧洲和美国格式,但假设小数点右边有两位数。
See the code in action at jsFiddle.
var priceDivs = document.querySelectorAll ("div.detailPrice");
for (var J = priceDivs.length - 1; J >= 0; --J) {
var oldPriceParts = priceDivs[J].textContent.match (/^(?:\s|\D)*([0-9\.,]*)(\d{2})\D*$/);
if (oldPriceParts.length === 3) {
var newPrice = parseInt ('0' + oldPriceParts[1].replace (/[\.,]/g, ""), 10)
+ parseInt (oldPriceParts[2], 10) / 100
;
// DO WHATEVER MANIP YOU WANT HERE.
newPrice = newPrice * 1.3;
priceDivs[J].textContent = '€ ' + newPrice.toFixed (2).toLocaleString ();
}
else {
console.log ("**Unexpected price format!** ", priceDivs[J]);
}
}