Calcul de valeur

Fermé
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 10 janv. 2014 à 11:04
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - 12 janv. 2014 à 22:17
Bonjour à tous !

Je rencontre un problème de calcul en javascript et souhaiterais votre aide !
var f_page_f = "facebook1";
var f_page_g = "facebook2";

function add_commas(number) {
if (number.length > 3) {
var mod = number.length % 3;
var output = (mod > 0 ? (number.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(number.length / 3); i++) {
if ((mod == 0) && (i == 0)) {
output += number.substring(mod+ 3 * i, mod + 3 * i + 3);} else {
output+= '' + number.substring(mod + 3 * i, mod + 3 * i + 3) + ' ';}}
return (output);} else {return number;}}

$(document).ready(function(){$.getJSON('https://graph.facebook.com/'+f_page_f+'?callback=?', function(data) {
var fb_count_f = data['likes'].toString(); fb_count_f = add_commas(fb_count_f); $('#fb_count_f').html(fb_count_f);});

$(document).ready(function(){$.getJSON('https://graph.facebook.com/'+f_page_g+'?callback=?', function(data) {
var fb_count_g = data['likes'].toString(); fb_count_g = add_commas(fb_count_g); $('#fb_count_g').html(fb_count_g);});
});});

<span id="fb_count_f"></span>
<span id="fb_count_g"></span>

Voici mon code. J'appel le résultat avec les <span>.
Y a t-il un moyen d'avoir une soustraction de ces 2 span ?
<span id="fb_count_f"></span> - <span id="fb_count_g"></span>

Merci de votre aide !
A voir également:

3 réponses

ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
Modifié par ryko1820 le 11/01/2014 à 21:17
Hello,

si c'est de la soustraction de 2 strings qui doivent apparaître dans tes span, dont il s'agit (car c'est pas très clair) genre :

<span id="fb_count_f">18</span>
<span id="fb_count_g">24</span>


et qu'il y a rien d'autre qui doit s'y mettre (genre des symboles monétaires ou des espaces ou d'autres string ... )

Le plupart te répondront d'utiliser innerHTML :

var mySpan1Content = document.getElementById('fb_count_f').innerHTML;
var mySpan2Content = document.getElementById('fb_count_g').innerHTML;
var mySub = mySpan1Content - mySpan2Content;


Mais après vérification ( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span#properties ) il existe une propriété DOM textContent que l'on peut aussi utiliser avec le span en lieu et place d'innerHTML.
Pas vérifié si c'était supporté par tous les navigateur ...

document.getElementById('fb_count_g').textContent


En jQuery le code serait moins long et pas trop à se soucier des problèmes de compatibilité sur les navigateurs modernes.

En faisant le plus concis possible :

$('#fb_count_f').text() - $('#fb_count_g').text()


rien n'empêche d'utiliser des variables intermédiaires ...

You may stop me but you can't stop us all ;-)
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
12 janv. 2014 à 21:44
Merci beaucoup ryko.
Cependant il m'affiche un resultat "0".

Voici tout mon code, je ne sais pas si c'est le rafraichissement de la page qui me crée ce problème (bien que je ne suis pas sûre)... :
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<script type="text/javascript">
var f_page_f = "facebook1";
var f_page_g = "facebook12";

function add_commas(number) {
if (number.length > 3) {var mod = number.length % 3;
var output = (mod > 0 ? (number.substring(0,mod)) : ''); for (i=0 ; i < Math.floor(number.length / 3); i++) {if ((mod == 0) && (i == 0)) {
output += number.substring(mod+ 3 * i, mod + 3 * i + 3);} else {output+= ' ' + number.substring(mod + 3 * i, mod + 3 * i + 3) + ' ';}}
return (output);} else {return number;}}

$(document).ready(function(){$.getJSON('https://graph.facebook.com/'+f_page_f+'?callback=?', function(data) {
var fb_count_f = data['likes'].toString(); fb_count_f = add_commas(fb_count_f); $('#fb_count_f').html(fb_count_f);});

$(document).ready(function(){$.getJSON('https://graph.facebook.com/'+f_page_g+'?callback=?', function(data) {
var fb_count_g = data['likes'].toString(); fb_count_g = add_commas(fb_count_g); $('#fb_count_g').html(fb_count_g);});
});});
</script>

<span id="fb_count_f"></span>
<br>
<span id="fb_count_g"></span>

<script>
var mySpan1 = document.getElementById('fb_count_f').innerHTML;
var mySpan2 = document.getElementById('fb_count_g').innerHTML;
var mySub = mySpan1 - mySpan2;

document.write(mySub);
</script>

<script type="text/javascript">var obj = 'window.location.replace("#");'; setTimeout(obj,5000);</script>
Pourquoi le 0 s'il doit faire un calcul de "chiffre" ?
0
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 276
12 janv. 2014 à 22:17
Hello,

je sais pas comment est faite ta page mais idéalement, il faudrait faire l'opération (et la récupération des informations dans les spans) après que la page ait été chargée.

Tu peux mettre la récupération de ces valeurs dans les spans dans une de tes fonctions callback ( $(document).ready(function() etc ...)
0