On m’a demandé de mettre en œuvre une petite validation sur les valeurs et si les valeurs sont supérieures ou inférieures à 0, j’ai besoin de modifier ou d’append / de supprimer le fichier CSS pour les balises td et i
Ma table ressemble à quelque chose comme ça
Year Weeks VAR (%) -10.65% VAR (diff) -13,953 VAR (%) 8.81% VAR (diff) 11,320
Actuellement, je suis en train de coder dur le css, mais j’aimerais pouvoir les modifier de manière dynamic, car les valeurs changent automatiquement. Quelqu’un peut-il suggérer le meilleur moyen d’archiver cela?
Je pensais dans ma demande Ajax de faire quelque chose comme ça:
var sdlyvar = $(parseFloat(".classname").text()); if (sdlyvar < 0){ $('.classname').removeClass(".classname").addClass("fa-level-down"); } else { $('.classname').removeClass(".classname").addClass("fa-level-up"); }
Utilisez JavaScript parseFloat pour parsingr le pourcentage ( http://www.w3schools.com/jsref/jsref_parsefloat.asp ).
var percent = $('#sdlyvar').text(); var result = parseFloat(percent) / 100.0; if (result < 0){ $('#sdlyvar').removeClass("fa-level-up"); $('#sdlyvar').addClass("fa-level-down") } else { $('#sdlyvar').removeClass("fa-level-down"); $('#sdlyvar').addClass("fa-level-up") }
Votre premier problème est que vous ne pouvez pas comparer une chaîne comme "-10.95%"
avec un entier, à cause du symbole %
final. Vous devez utiliser parseFloat
sur cette valeur:
var sdlyvar = parseFloat($('#sdlyvar').text());
Il prendra en charge tous les éléments non numériques après le numéro.
Ensuite, vous voudrez probablement supprimer la classe opposée lors de la mise à jour:
if (sdlyvar < 0){ $('#sdlyvar').removeClass("fa-level-up").addClass("fa-level-down"); } else { $('#sdlyvar').removeClass("fa-level-down").addClass("fa-level-up"); }
Quelques suggestions aléatoires:
var $sdlyvar = $("sdlyvar");
référence à un élément plusieurs fois avec jQuery, envisagez de placer la sélection dans une variable, comme var $sdlyvar = $("sdlyvar");
: plus rapide à taper et à exécuter. Ici, slice supprimera le signe% dans ce code et le rest du code comparera la valeur et assignera ou supprimera une classe
var sdlyvar = $('#sdlyvar').text(); if (sdlyvar.slice(0,-1) < 0){ $('#sdlyvar').removeClass("fa-level-up"); $('#sdlyvar').addClass("fa-level-down"); } else { $('#sdlyvar').removeClass("fa-level-down"); $('#sdlyvar').addClass("fa-level-up"); }
var lis=document.querySelectorAll("tr td i"); for(var i in lis){ if(parseInt(lis[i].innerHTML)<0){ lis[i].className+=" fa-level-down"; } else{ lis[i].className+=" fa-level-up"; } }