Javascript 更改td颜色(如果其值超过10000)
我正在做CS50金融演习,我试图展示是否有人通过他的股票获利。最初,你会得到10000元现金。我试图显示投资组合的总价值(HTML代码末尾)何时超过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 股票 公司名称 数量 现行价格
$(文档).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');
}
});
});