JavaScript一次替换文本中的多个字符
我有一个表,我正试图根据表中的值为其着色。因此,如果表中的值为150%,单元格将被涂成红色。如果表中的值为50%,则该值将显示为绿色。但是,由于某些原因,表中的实际文本中有大量空格以及%符号。如何用零(“”)替换任何空格和“%”字符 以下是我所拥有的不起作用的东西:JavaScript一次替换文本中的多个字符,javascript,Javascript,我有一个表,我正试图根据表中的值为其着色。因此,如果表中的值为150%,单元格将被涂成红色。如果表中的值为50%,则该值将显示为绿色。但是,由于某些原因,表中的实际文本中有大量空格以及%符号。如何用零(“”)替换任何空格和“%”字符 以下是我所拥有的不起作用的东西: <script type="text/javascript"> $(document).ready(function () { $('#myTable td.
<script type="text/javascript">
$(document).ready(function () {
$('#myTable td.PercentMem').each(function () {
if ($(this).text().replace(/\s/g, '').replace('%', '') >= '100') {
$(this).css('background-color', '#ff0000');
}
else {
$(this).css('background-color', '#33cc33');
}
});
});
</script>
$(文档).ready(函数(){
$('#myTable td.PercentMem')。每个(函数(){
如果($(this).text().replace(/\s/g,'').replace('%','')>='100'){
$(this.css('background-color','#ff0000');
}
否则{
$(this.css('background-color','#33cc33');
}
});
});
谢谢大家!
编辑
我很笨。我忘了包括这些百分比有一个小数点这一事实。所以,我真正要处理的是类似于“50.89%”的东西,目前提供的解决方案将其转换为“5089”。如何保留小数?您需要去掉所有非数字字符,然后将结果字符串转换为int。类似于这样:
parseInt($(this).text().replace(/\D/g')
。此外,在您的帖子中,您正在比较字符串'100'
,它显然应该是一个数字。试试这个:
$(document).ready(function () {
$('#myTable td.PercentMem').each(function () {
if (parseInt($(this).text().replace(/\D/g,'')) >= 100) {
$(this).css('background-color', '#ff0000');
}
else {
$(this).css('background-color', '#33cc33');
}
});
});
免责声明:我还没有实际测试过这个,但这应该是可行的。您可以通过这个来实现,避免使用jQuery来选择元素,使用纯JavaScript:
const myCells = document.querySelectorAll('.PercentMem');
myCells.forEach(cell => {
const cellValue = cell.textContent.replace(/\D+/g, '');
cell.classList.toggle(parseInt(cellValue) >= 100 ? 'red' : 'green');
});
以下是完整的代码。搜索所有数字或替换所有非数字会更容易。此外,您必须将结果字符串转换为数字,字典比较会给出某些数字的意外结果,例如
“9”>“100”==true
。这仍然不起作用,因为您正在执行>='100',这是一个字符串而不是数字。确实如此。谢谢你的指点。谢谢你的帮助!我试图实现这个解决方案,但不管值是什么,单元格对我来说都是红色的。你能解释一下“/\D/g”是什么吗?@Pecker当然\d
和\d
是正则表达式元字符。以下是它们的定义:\d(数字)匹配任何单个数字(与[0-9]相同)。大写对应\D(非数字)匹配任何非数字的单个字符(与[^0-9]相同)。
\g
简单的意思是对所有出现的字符(全局)进行匹配。因此,replace(/\D/g,”)
将所有非数字替换为空字符串。感谢您的帮助!我尝试了此解决方案,但没有成功:(.此案例中的单元格没有变为红色或绿色。我会尝试为我的案例排除您的解决方案,但我不理解代码中的任何语法。遗憾的是,您检查了fiddler链接吗?您需要一个完整的解决方案。我已检查了链接。它在那里工作得很好!您能解释一下“/\D+/g”是什么吗是吗?是的,当然,除去数字以外的任何字符都是正则表达式的条件。哦,天哪……对不起,我忘了包括一件重要的事情!我要处理的百分比看起来更像“50.89%”,所以在除去所有非数字字符时,我要将其变成5089。我如何除去空格和百分比,而不是小数?