2016-09-21 3 views
0

私のシナリオでは、ページに4つの要素があり、これらはすべて互いに異なる場合があります。複数の要素の上位にある場合は、数値を0〜5に制限します。

これらの丸め上ありえない完全に正確のでoccasionaly私は5.5/5または.19.5/5私の評価上だけでなく、data-progress="110"またはdata-progress="-390"

<div class="radial-progress blue-radial" data-progress="110"> 
    <div class="circle"> 
    <div class="mask full"> 
     <div class="fill"></div> 
    </div> 
    <div class="mask half"> 
     <div class="fill"></div> 
     <div class="fill fix"></div> 
    </div> 
    </div> 
    <div class="inset"> 
    <div class="percentage"> 
     <div class="numbers">Product <span>5.5/5</span></div> 
    </div> 
    </div> 
</div> 

<div class="radial-progress red-radial" data-progress="110"> 
    <div class="circle"> 
    <div class="mask full"> 
     <div class="fill"></div> 
    </div> 
    <div class="mask half"> 
     <div class="fill"></div> 
     <div class="fill fix"></div> 
    </div> 
    </div> 
    <div class="inset"> 
    <div class="percentage"> 
     <div class="numbers">Seller <span>5.5/5</span></div> 
    </div> 
    </div> 
</div> 


<div class="radial-progress yellow-radial" data-progress="-390"> 
    <div class="circle"> 
    <div class="mask full"> 
     <div class="fill"></div> 
    </div> 
    <div class="mask half"> 
     <div class="fill"></div> 
     <div class="fill fix"></div> 
    </div> 
    </div> 
    <div class="inset"> 
    <div class="percentage"> 
     <div class="numbers">Shipping <span>-19.5/5</span></div> 
    </div> 
    </div> 
</div> 

を取得します。この問題を修正する私のハック非効率的な方法は、標的にされた数学私はすべての可能な変化をターゲットにしたくない:contains

if ($('.blue-radial span:contains("5.5")')) { 
    $('.blue-radial span').html('5/5') 
    $('.blue-radial').attr('data-progress', '100') 
} 

if ($('.blue-radial span:contains("5.5")')) { 
    $('.blue-radial span').html('5/5') 
    $('.blue-radial').attr('data-progress', '100') 
} 

// ETC... 

経由数はなく、このついて行くのより良い方法があります1005/5または0のいずれかに丸めてくれるようなifの文を実行する必要がありますか?

EDIT

<?php 
$rates['desc']['score'] = 4.0; 
$rates['service']['score'] = 4.0; 
$rates['shipping']['score'] = 4.0; 
$rates['desc']['score'] = floor((($rates['desc']['score'] - 3.9) * 5) * 2)/2; 
$rates['service']['score'] = floor((($rates['service']['score'] - 3.9) * 5) * 2)/2; 
$rates['shipping']['score'] = floor((($rates['shipping']['score'] - 3.9) * 5) * 2)/2; 
$average = floor((($rates['desc']['score'] * 0.5) + ($rates['service']['score'] * 0.2) + ($rates['shipping']['score'] * 0.3)) * 2)/2; 
?> 

これは、あなたがこのような何かを行うことができ、私は最初の数字に

+0

はあなたを行います数学的方程式が何であるか知っていますか? – madalinivascu

+0

驚いたことに私は、これを行うforeach型の方法があるのか​​どうか疑問に思っています。 – NooBskie

+0

「不正確な」計算はどこで行われましたか?多分それはそこから固定することができます –

答えて

0

を取得しています方法です:

$('.numbers').find('span').each(function(){ 
    var text = $(this).text().split('/')[0]; 
    if(parseFloat(text) > 5) { 
    $(this).html('5/5') 
    $(this).closest('.radial-progress').attr('data-progress', '100') 
    } 
    if(parseFloat(text) < 0) { 
    $(this).html('0/5') 
    $(this).closest('.radial-progress').attr('data-progress', '0') 
    } 
}); 

はデモを参照してください。https://jsfiddle.net/bsbuy3p8/

+1

まさに私が感謝を達成しようとしていたもの:) – NooBskie

関連する問題