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を見ると、もっと理にかなっています。

これは、これを行うことができる多くの方法の1つです。もう1つの方法は、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'

また。これを行う他の方法もあります。あなたはただそれらを探す必要があります。お役に立てれば。

于 2012-10-16T16:40:16.483 に答える
1

querySelectorAll()形式にかなり確信がある場合は、を使用してdivを取得し、正規表現を使用して価格を抽出します。
以下の正規表現は、一般的なヨーロッパおよび米国の形式を説明していますが、小数点の右側に2桁の数字があると想定しています。

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 に答える