2017-10-18 5 views
-1

J'ai une page d'articles avec différents prix en GBP, chaque prix est dans une fourchette avec une classe de prix, ce que je voudrais faire est de changer la valeur de tous les prix à cette valeur divisée par 1,2. donc le long des lignes dejQuery division - trouver toutes les classes de prix et de diviser

$('.price').html()/"1.2"; 

maintenant je suis conscient que cela ne fonctionnera pas comme format est £ 10,500 par exemple, je nai pas été en mesure de trouver similaire ici, mais je voudrais prendre cette 10500 £ valeur diviser par 1,2 et avoir la mise à jour de la valeur au résultat (£ 8,750). Tout ce que j'ai essayé jusqu'ici me laisse avec NaN et je me bats pour faire des progrès.

+0

Vous avez du mal à rendre le processus parce que vous ne l'avez pas essayé de regarder sur Google. Je voudrais alors regarder la fonction $ .each() et partir de là. – ProEvilz

+0

Incorrect, j'ai regardé sur Google, mais merci pour une réponse très inutile. – user4349555

+0

$ .each() est la fonction dont vous avez besoin ... – ProEvilz

Répondre

2

Ajouter un bouton pour le test:

<button id="test-button">Test Currencies</button> 

Ajouter le jQuery suivant:

$('#test-button').on('click', function() { 
    // Get currency elements 
    var currencies = $('.price'); 
    var newSymbol = '£'; 
    var eRate = 0.8333; 
    $.each(currencies, function (index, value) { 
     // Change value to a number using regex 
     var number = Number($(this).html().replace(/[^0-9\.]+/g, "")); 
     // Assign new value and add number formatting 
     $(this).html(newSymbol + (number * eRate).toFixed(2).toLocaleString('en')); 
    }); 

}); 

Hope it helps.

+0

@ user4349555 Mise à jour pour mise en forme du nombre de post-traitement – RickL

+0

A peu près frappé le clou sur la tête, manquant la virgule mais je suis sûr que je peux craquer cela. Appréciez les commentaires pour m'aider à comprendre ce qui se passe dans le code. – user4349555

+1

Bonne réponse, oui! Bien expliqué et très utile, bien fait! – MadsBinger

0

Voilà :-)

Testé et fonctionnel.

$("span").each(function() 
{ 
var strNewString = $(this).html().replace(',',''); 
$(this).html(strNewString/1.2); 
}); 
+0

Bien sûr, si vous voulez que le numéro soit de nouveau formaté avec le "," vous pouvez le faire par la suite. Demander si des questions. – MadsBinger

+0

Cela se traduit par toutes les valeurs changeant en "0" - serait-ce parce que le £ est dans la valeur et pas seulement les nombres? – user4349555

+0

Ah, oui. - Le £ est-il dans la fourchette? Si possible, vous pouvez définir £ en dehors de la plage, et cela fonctionnera. Sinon, vous pouvez remplacer ce caractère par "vide" et l'ajouter à nouveau après. – MadsBinger

0

function format_price(_input_str){ 
 
\t var input_str=_input_str+''; //if input integer convert to string 
 
\t input_str=input_str.replace(new RegExp(' ',"g"), ''); //if exist spaces 
 
\t input_str=input_str.replace(new RegExp('&#163;',"g"), ''); //if exist simbil £ 
 
\t input_str=input_str.replace(new RegExp('&nbsp;',"g"), ''); //if wxist &nbsp; 
 
\t var input_int = parseInt(input_str)||0; 
 
\t if(input_int==0){ return _input_str;} //return original string 
 
\t input_str=input_int+''; 
 
\t var out_str=''; 
 
\t while(input_str.length > 3){ 
 
\t \t out_str=input_str.substr(-3)+'&nbsp;'+out_str; 
 
\t \t input_str=input_str.substr(0,input_str.length-3); 
 
\t } 
 
\t if(input_str.length>0){out_str=input_str+'&nbsp;'+out_str;} 
 
\t out_str='&#163;&nbsp;'+out_str; 
 
\t return out_str; 
 
} 
 

 

 

 

 
    $('.price').each(function(){ 
 
     var this_price=$(this).html(); 
 
    \t $(this).html(format_price(this_price)); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
    <div class="price">12345</div> 
 
    <div class="price">76 09</div> 
 
    <div class="price">4576 09</div> 
 
    <div class="price">45</div> 
 
    <div class="price">&#163;&nbsp;12&nbsp;345&nbsp;678&nbsp;</div>