2017-10-05 60 views
0

我發現Bitwise Creative提供的這個很好的腳本可以通過值更改數值內容的顏色。如何爲不同結果的每個元素運行函數?

$(function() { 
    // Score Color 
    var score = parseInt($('em').text().trim()); 
    var color = 'red'; 
    if (!isNaN(score)) { 
     if (score >= 2) { 
      color = 'orange'; 
     } 
     if (score >= 3) { 
      color = 'green'; 
     } 
     $('em').css('color', color); 
    } 
}); 

我的問題: 它改變所有的數字內容相同的顏色。所以如果我有多個數字內容,這個腳本在數字和顏色之間沒有什麼不同。我該如何修改它,例如每個[em]值[/ em]變成他自己的顏色?

<em>1</em> --> red 
<em>2.5</em> --> orange 
<em>3</em> --> green 
<em>1.5</em> --> red 

aso。

+1

@Rajesh - 這是** **不是問題。問題是代碼中沒有循環,所以當然所有'em'都只有一個顏色 –

+0

@Rajesh OP已經在執行'parseInt',所以字符串不是問題。 – gurvinder372

+0

謝謝帥哥4支持!現在我看到我的失敗... – Pepe

回答

2

$('em').text()會給你一個字符串,其中包含所有匹配元素的組合文本。

您需要遍歷em元素和色彩應用到他們的個人

$(function() { 
    // Score Color 
    $("em").each(function(){ 
     var score = parseInt($(this).text().trim()); 
     var color = 'red'; 
     if (!isNaN(score)) { 
      if (score >= 2) { 
       color = 'orange'; 
      } 
      if (score >= 3) { 
       color = 'green'; 
      } 
      $(this).css('color', color); 
     } 
    }); 
}); 
+0

這對我來說非常完美,非常感謝!我嘗試過使用「每個」,但現在我明白我做錯了什麼;) – Pepe

0

,如果你想,如果得分爲2.5,然後顏色必須是橙色 然後給出分數必須float號碼,你可以轉換字符串使用parseFloat 可以通過

var score = parseFloat($('em').text().trim()); 
+0

也謝謝你 - 也是一種有趣的方式! – Pepe

0

進行浮動號碼你可以聲明Object映射整數VALU es轉換爲相應的顏色。

var couleurs = { 
    1: 'red', 
    [2.5] : 'orange' 
} 

,這樣就可以作爲

$(this).css('color', couleurs[color]); 
0

訪問很簡單:只要用一個循環遍歷所有EMS:

$('em').each(function(){ 
    var score = parseInt($(this).text().trim()), 
      color = 'red'; 

    if (!isNaN(score)) return; 

    if (score >= 2) { 
     color = 'orange'; 
    } 
    if (score >= 3) { 
     color = 'green'; 
    } 
    $(this).css('color', color); 
}); 
+0

謝謝!是的,那是我的失敗;(就像gurvinder372說的那樣......) – Pepe

相關問題