2

首先,我有一些 JavaScript 方面的经验,但主要是在客户端编写程序脚本,而不是 Web 环境中的 JavaScript。

我想要做的是获取和替换这个类中的 vlaue:

<div class="detailPrice" style="float:left;width:180px"> € 20,90* </div>

每一页的值都会改变。所以我无法搜索这个特定的值。当我得到值时,我想将它分配给一个变量,例如

price = 20.9

对其进行一些数学运算,然后用旧值替换我的新值。

感谢您提前提供任何帮助。

4

2 回答 2

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,它会更有意义。

这是您可以执行此操作的众多方法之一。另一种方法是使用称为原型的 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'

再次。还有其他方法可以做到这一点。你只需要寻找它们。希望这可以帮助。

于 2012-10-16T16:40:16.483 回答
1

querySelectorAll()如果您相当确定格式,请使用获取 div 并使用正则表达式提取价格。
下面的正则表达式说明了常见的欧洲和美国格式,但假定小数点右侧有两位数。

请参阅 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]);
    }
}
于 2012-10-16T18:10:57.683 回答