Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript一次替换文本中的多个字符_Javascript - Fatal编程技术网

JavaScript一次替换文本中的多个字符

JavaScript一次替换文本中的多个字符,javascript,Javascript,我有一个表,我正试图根据表中的值为其着色。因此,如果表中的值为150%,单元格将被涂成红色。如果表中的值为50%,则该值将显示为绿色。但是,由于某些原因,表中的实际文本中有大量空格以及%符号。如何用零(“”)替换任何空格和“%”字符 以下是我所拥有的不起作用的东西: <script type="text/javascript"> $(document).ready(function () { $('#myTable td.

我有一个表,我正试图根据表中的值为其着色。因此,如果表中的值为150%,单元格将被涂成红色。如果表中的值为50%,则该值将显示为绿色。但是,由于某些原因,表中的实际文本中有大量空格以及%符号。如何用零(“”)替换任何空格和“%”字符

以下是我所拥有的不起作用的东西:

<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。我如何除去空格和百分比,而不是小数?