根据百分比值更改 CSS 类

发布于 2024-12-24 16:43:22 字数 1387 浏览 2 评论 0原文

这是最新的 JSFiddle

HTML:

<table id="math-table">
    <tr>
           <td><input type="text" id="A1" name="A" value=""></td>
           <td><input type="text" id="B1" name="B" value=""></td>
           <td><input type="text" id="C1" name="C" readonly="readonly" tabIndex="-1" value=""></td>
      </tr>
</table> 

JS:

$("#math-table input").live("keyup", function(){
var id = this.id.match(/\d+/);
$("#C"+id).val( Math.round (($("#A"+id).val() / $("#B"+id).val()) * 100) + "%"  );

$('#A'+id).attr('value', $('#A'+id).val());  
$('#B'+id).attr('value', $('#B'+id).val());  
$('#C'+id).attr('value', $('#C'+id).val());  
});

var uniqueIds = $("#math-table tr").length;
$("#math-table input[id^='B']").live("change", function(){
var $thisRow = $(this).closest("tr"),
$clone = $thisRow.clone(),             // Clone row
$inputs = $clone.find("input").val("");// Reset values, return all inputs
uniqueIds++; //Increment ID
$inputs[0].id = "A" + uniqueIds;
$inputs[1].id = "B" + uniqueIds;
$inputs[2].id = "C" + uniqueIds;
$thisRow.after($clone);                    
});

你可以看到 A/B = C% 非常简单。我如何根据一定的百分比将不同的 CSS 类添加到仅 C 中?

红色 1-33%

绿色 34-66%

蓝色 67-100%

Here's the latest JSFiddle.

HTML:

<table id="math-table">
    <tr>
           <td><input type="text" id="A1" name="A" value=""></td>
           <td><input type="text" id="B1" name="B" value=""></td>
           <td><input type="text" id="C1" name="C" readonly="readonly" tabIndex="-1" value=""></td>
      </tr>
</table> 

JS:

$("#math-table input").live("keyup", function(){
var id = this.id.match(/\d+/);
$("#C"+id).val( Math.round (($("#A"+id).val() / $("#B"+id).val()) * 100) + "%"  );

$('#A'+id).attr('value', $('#A'+id).val());  
$('#B'+id).attr('value', $('#B'+id).val());  
$('#C'+id).attr('value', $('#C'+id).val());  
});

var uniqueIds = $("#math-table tr").length;
$("#math-table input[id^='B']").live("change", function(){
var $thisRow = $(this).closest("tr"),
$clone = $thisRow.clone(),             // Clone row
$inputs = $clone.find("input").val("");// Reset values, return all inputs
uniqueIds++; //Increment ID
$inputs[0].id = "A" + uniqueIds;
$inputs[1].id = "B" + uniqueIds;
$inputs[2].id = "C" + uniqueIds;
$thisRow.after($clone);                    
});

You can see that A/B = C% Pretty simple. How would I add a different CSS class to only C based on a certain %?

Red 1-33%

Green 34-66%

Blue 67-100%

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

通知家属抬走 2024-12-31 16:43:22

使用 addClass 、removeClass 函数进行更改。就像下面这样:

$(".first").addClass("second") // 添加一个类

$(".first").removeClass("second") // 删除一个类

只需获取变量中的 C 值并根据该值更改类即可通过应用 if/else 到 % 你想要的

Use addClass , removeClass functions to change. Like below:

$(".first").addClass("second") // add a class

$(".first").removeClass("second") // remove a class

Just take the C value inside a variable and change class according to % you want by applying if/else

远山浅 2024-12-31 16:43:22

我更新了你的 jsFiddle:

http://jsfiddle.net/CzZxf/13/

我添加了一个变量 < code>percent 并基于此设置背景颜色,如下所示:

  if(percent>0 && percent<34)
    $('#C'+id).addClass("red");
if(percent>33 && percent<67)
    $('#C'+id).addClass("green");
if(percent>67)
    $('#C'+id).addClass("blue");

编辑:我更新了脚本以从克隆中删除该类。添加这个

$inputs = $clone.find("input").val("").removeClass();

I updated your jsFiddle:

http://jsfiddle.net/CzZxf/13/

I added a variable percent and set the background color based on that like this:

  if(percent>0 && percent<34)
    $('#C'+id).addClass("red");
if(percent>33 && percent<67)
    $('#C'+id).addClass("green");
if(percent>67)
    $('#C'+id).addClass("blue");

EDIT: I updated the script to remove the class from the clone. Add this

$inputs = $clone.find("input").val("").removeClass();
听风吹 2024-12-31 16:43:22

它看起来像一个简单的 if - else if 或基于 C 值的 switch 语句。
只需将 C 值存储在变量中并进行测试即可。

只需使用addClass(http://api.jquery.com/addClass/)或removeClass(http://api.jquery.com/removeClass/)即可。

it looks like a simple if - else if or switch statement based on C value.
Just store the C value inside a variable and make your test.

Simply use addClass (http://api.jquery.com/addClass/) or removeClass (http://api.jquery.com/removeClass/).

在风中等你 2024-12-31 16:43:22

以最明显的方式进行操作:

var num = Math.round(($("#A" + id).val() / $("#B" + id).val()) * 100);
$("#C" + id).val(num + "%");
if (num >= 0 && num <= 33) {
    var cname = "alpha";
} else if (num > 33 && num <= 66) {
    var cname = "beta";
} else if (num > 66 && num <= 100) {
    var cname = "gamma";
}
$('#C').removeClass().addClass(cname);

http://jsfiddle.net/mblase75/CzZxf/7/

Do it the most obvious way:

var num = Math.round(($("#A" + id).val() / $("#B" + id).val()) * 100);
$("#C" + id).val(num + "%");
if (num >= 0 && num <= 33) {
    var cname = "alpha";
} else if (num > 33 && num <= 66) {
    var cname = "beta";
} else if (num > 66 && num <= 100) {
    var cname = "gamma";
}
$('#C').removeClass().addClass(cname);

http://jsfiddle.net/mblase75/CzZxf/7/

深海夜未眠 2024-12-31 16:43:22

看看这个: http://jsfiddle.net/CzZxf/5/

它并不完全使用类,但它应该足以让您自定义它以满足您的需求:

$("#math-table input").live("keyup", function(){
    var id = this.id.match(/\d+/);
    var result = Math.round (($("#A"+id).val() / $("#B"+id).val()) * 100);
    var result_color = (result >=1 && result < 34) ? 'red' : (result >=34 && result < 67) ? 'green' : 'blue';

    $("#C"+id).val( result + "%"  ).css('color', result_color);

    $('#A'+id).attr('value', $('#A'+id).val());  
    $('#B'+id).attr('value', $('#B'+id).val());  
    $('#C'+id).attr('value', $('#C'+id).val());  
});

var uniqueIds = $("#math-table tr").length;
$("#math-table input[id^='B']").live("change", function(){
    var $thisRow = $(this).closest("tr"),
    $clone = $thisRow.clone(),             // Clone row
    $inputs = $clone.find("input").val("");// Reset values, return all inputs
    uniqueIds++; //Increment ID
    $inputs[0].id = "A" + uniqueIds;
    $inputs[1].id = "B" + uniqueIds;
    $inputs[2].id = "C" + uniqueIds;
    //$inputs.eq(0).focus();                     
    $thisRow.after($clone);                    
});

Check this out: http://jsfiddle.net/CzZxf/5/

It's not exactly using classes, but it should give you enough to customize it to fit your needs:

$("#math-table input").live("keyup", function(){
    var id = this.id.match(/\d+/);
    var result = Math.round (($("#A"+id).val() / $("#B"+id).val()) * 100);
    var result_color = (result >=1 && result < 34) ? 'red' : (result >=34 && result < 67) ? 'green' : 'blue';

    $("#C"+id).val( result + "%"  ).css('color', result_color);

    $('#A'+id).attr('value', $('#A'+id).val());  
    $('#B'+id).attr('value', $('#B'+id).val());  
    $('#C'+id).attr('value', $('#C'+id).val());  
});

var uniqueIds = $("#math-table tr").length;
$("#math-table input[id^='B']").live("change", function(){
    var $thisRow = $(this).closest("tr"),
    $clone = $thisRow.clone(),             // Clone row
    $inputs = $clone.find("input").val("");// Reset values, return all inputs
    uniqueIds++; //Increment ID
    $inputs[0].id = "A" + uniqueIds;
    $inputs[1].id = "B" + uniqueIds;
    $inputs[2].id = "C" + uniqueIds;
    //$inputs.eq(0).focus();                     
    $thisRow.after($clone);                    
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文