2016-03-18 9 views
0

Ich habe den folgenden Code den Prozentsatz jedes Elements (wie Umfrage Wahlsystem) zu berechnen:berechnen Prozent jedes Elements

$(document).ready(function() { 
 
    $("#percentage").click(function() { 
 
     var number, sumNumbers = 0, newPercent; 
 
    
 
     $(".item").each(function() { 
 
      number = $(this).children(".itemNum").text(); 
 
      number = +number; 
 

 
      sumNumbers += number; 
 

 
      if(sumNumbers != 0) { 
 
       newPercent = (number/sumNumbers) * 100; 
 
      } else { 
 
       newPercent = 0; 
 
      } 
 

 
      $(this).children(".percentage").text(newPercent+"%"); 
 
     }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="item"> 
 
    <span class="itemNum">0</span> <span class="percentage"></span> 
 
</div> 
 

 
<div class="item"> 
 
    <span class="itemNum">2</span> <span class="percentage"></span> 
 
</div> 
 

 
<div class="item"> 
 
    <span class="itemNum">1</span> <span class="percentage"></span> 
 
</div> 
 

 
<button id="percentage">Calculate Percentage!</button>

Aber das Ergebnis ist:

0 0% 
2 100% 
1 33.33333333333333% 

Also, wie berechnet man das folgende Ergebnis zurück?

0 0% 
2 66.66666666666667% 
1 33.33333333333333% 

Ich brauche diese Ergebnisse, um einen Fortschrittsbalken auf meinem Poll-System zu machen, also, wie man das macht?

+3

Sie haben die Summe zuerst erhalten, bevor Sie die Prozentsätze berechnen kann. – Musa

+0

Also, ich muss andere '$ (". Item ") tun. Jedes ...' vor dem ersten '.each'? Ich habe das gemacht und es funktioniert, aber ich weiß nicht, ob es richtig ist, etwas wie: '$ (". Item ") zu verwenden. Je (function() {doSomething()}); $ (". item"). je (function() {doSomethingAgain()}); '@Musa – Igor

+1

@Igor Ich habe meine Antwort bearbeitet, um auf * .each() * comment zu antworten. –

Antwort

3

Sie müssen den Text in Ganzzahl über parseInt() Funktion analysieren.

Und Sie müssen zuerst Zahlen addieren und dann können Sie Prozent berechnen.

Für eine Schleife Frage:
Sie können Prozentsatz in einer Schleife nicht zählen. Erklärt here

$(document).ready(function() { 
 
    $("#percentage").click(function() { 
 
     var number, sumNumbers = 0, newPercent; 
 
     $(".item").each(function(){ 
 
       number = $(this).children(".itemNum").text(); 
 
       sumNumbers += parseInt(number); 
 
       
 
      }); 
 
     $(".item").each(function() { 
 
      number = parseInt($(this).children(".itemNum").text()); 
 

 
      if(sumNumbers != 0) { 
 
       newPercent = (number/sumNumbers) * 100; 
 
      } else { 
 
       newPercent = 0; 
 
      } 
 

 
      $(this).children(".percentage").text(newPercent+"%"); 
 
     }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="item"> 
 
    <span class="itemNum">0</span> <span class="percentage"></span> 
 
</div> 
 

 
<div class="item"> 
 
    <span class="itemNum">2</span> <span class="percentage"></span> 
 
</div> 
 

 
<div class="item"> 
 
    <span class="itemNum">1</span> <span class="percentage"></span> 
 
</div> 
 

 
<button id="percentage">Calculate Percentage!</button>

+1

Warum unten abstimmen? Mein Snippet funktioniert korrekt, wie Ihre Frage es wollte. –

+0

Ich habe das getan, also war meine Frage über die Verwendung '.each' wieder ... Aber Ihre Antwort ist richtig und funktioniert auch. Vielen Dank. – Igor

+1

@Igor Du bist Frage war nicht arbeiten Prozentsatz zählen nicht über * .Each *;). Kein Problem. –