Javascript 更改td颜色(如果其值超过10000)

Javascript 更改td颜色(如果其值超过10000),javascript,jquery,html,html-table,css-selectors,Javascript,Jquery,Html,Html Table,Css Selectors,我正在做CS50金融演习,我试图展示是否有人通过他的股票获利。最初,你会得到10000元现金。我试图显示投资组合的总价值(HTML代码末尾)何时超过10000美元。我已经写了下面的代码,它还没有工作,但是,希望你能帮助我 $(文档).ready(函数(){ $('#table_id td.color')。每个(函数(){ 如果($(this).val()>10000){ $(this.css('color','#2e944b'); } }); }); 用户ID 股票 公司名称 数量 现行价格

我正在做CS50金融演习,我试图展示是否有人通过他的股票获利。最初,你会得到10000元现金。我试图显示投资组合的总价值(HTML代码末尾)何时超过10000美元。我已经写了下面的代码,它还没有工作,但是,希望你能帮助我


$(文档).ready(函数(){
$('#table_id td.color')。每个(函数(){
如果($(this).val()>10000){
$(this.css('color','#2e944b');
}
});
});
用户ID
股票
公司名称
数量
现行价格
持有
{portfolio%%中的端口为%0}
{{port.id}
{{port.stocks}
{{查找(port.stocks)['name']}
{{port.amount}
{{usd(查找(港口库存)['price'])}
{{usd(查找(port.stocks)['price']*port.amount)}
{%endfor%}
现金
{{美元(现金)}
全部的
{{美元(总计)}

通过执行
if($(this).val()>1000){
检查
td
的值。但是
td
没有值,它里面有一个文本。因此,需要检查
.text()
方法,而不是
.val()
方法

$('#table_id td.color').each(function(){
    if ($(this).text() > 1000) {
        $(this).css('color','#2e944b');
    }
});

考虑到值总是
整数

val()
方法仅适用于输入字段,要获取
的内部html,您需要使用
text()

问题是
$(this).val()
标记没有
val()


$(文档).ready(函数(){
$('#table_id td.color')。每个(函数(){
如果($(this.html()>1000){
$(this.css('color','#2e944b');
}
});
});
用户ID
持有
全部的
900
全部的
1001

首先请注意,jQuery 1.4.4已经非常过时了。您应该至少使用1.12.1,最好是3.3.1(在提出此问题时)

逻辑的主要问题是,您正在对没有值的
td
元素使用
val()
。您需要检查
文本()
。鉴于文本的格式,您还需要在进行比较之前从中删除
$
字符

还请注意,更好的做法是将类应用于元素以对其进行样式设置,从而保持关注点的分离。因此,您可以使用
addClass()
,并且可以为该方法调用提供一个函数,以确定是否应基于单元格中的文本添加类

最后请注意,问题状态为“超过10000”,但您的代码检查的是超过1000。无论哪种情况,这都是逻辑上的一个简单更改。请尝试以下操作:

$(文档).ready(函数(){
$('#table_id td.color').addClass(函数(){
var total=$(this.text().replace(/[$,]/g');
返回parseInt(总计10)>10000?'foo':null;
});
});
.foo{
颜色:#2E944B;
}

用户ID
股票
公司名称
数量
现行价格
持有
全部的
$101
全部的
$1,001
全部的
$10,001
全部的
$100,001

您正在将字符串与整数进行比较,请将其计算出来,
10>“11”
工作正常。虽然将其解析为整数可能是一件好事,但这不是实际问题。顺便说一句,您应该在回答中添加一些说明,而不仅仅是“这将起作用”,否则有人可能会因为你的答案不具描述性而否决你;-)只有代码的答案通常不受欢迎。@amoghegde这叫类型强制。它已经存在很长时间了,会让很多不懂的人认为这是个错误。好吧,抱歉这个错误。我自己尝试过了,我会删除它向下投票..编辑:太晚了5分钟了抱歉..你好@Rory,谢谢你清楚的回答。还有一个问题:因为我通过一个函数传递值,使其成为美元符号,所以将其变为绿色似乎不起作用。此函数的代码非常简单:返回f“${value:,.2f}”有什么建议吗?在进行计算之前,只需删除
$
parseInt($(this).text().replace('$,''),10)
mmm,恐怕这对我不起作用。我也尝试过用0替换$,但也没有用。很抱歉打扰您,谢谢您的帮助。另外,您介意在原始帖子中指定jQuery代码中的10 in')、10')和空值是什么吗?我对这方面比较陌生。您能给我一个实际输出va的示例吗lue.
10
是基数:我添加了一个屏幕截图,希望这就是你的意思。@Rory
$(document).ready(function(){
    $('#table_id td.color').each(function(){
        if (parseInt($(this).text()) > 1000) {
            $(this).css('color','#2e944b');
        }
    });
});