Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 上一个td中两个数字的错误百分比_Javascript_Jquery - Fatal编程技术网

Javascript 上一个td中两个数字的错误百分比

Javascript 上一个td中两个数字的错误百分比,javascript,jquery,Javascript,Jquery,我有一个由和组成的表,我在第三个中显示了售出门票的百分比。它还支持mytext作为数字。我的问题是代码计算错误的百分比。我认为这个问题来自html格式,比如空格或标签。 我该怎么办? 以下是我的片段: $('table tbody tr')。每个(函数(){ var$this=这个, td2Value=$('td:nth child(2)'$this).text().trim().split(/\D+/); $('span.result',$this).each(函数(索引,元素){ 设v=$

我有一个由
组成的表,我在第三个
中显示了售出门票的百分比。它还支持mytext作为数字。我的问题是代码计算错误的百分比。我认为这个问题来自html格式,比如空格或标签。 我该怎么办? 以下是我的片段:

$('table tbody tr')。每个(函数(){
var$this=这个,
td2Value=$('td:nth child(2)'$this).text().trim().split(/\D+/);
$('span.result',$this).each(函数(索引,元素){
设v=$('td:nth child(1)'),$this.text().trim().split(/(\d+/).filter(v=>v);
如果(v[index]!=null&&v[index].trim()=“Mytext”)
{
v[指数]=TD2值[指数];
}
如果(v[index]!=null)
{
$(element.html(Math.round((td2Value[index]*100/v[index])| | 0)+'%');
}
});
})

可用的
出售
结果
10
Mytext
5
2



我想你应该试试这个

$(element).html(Math.round((parseInt(td2Value[index]) * 100 / parseInt(v[index])) || 0) + '%');

如果您想要十进制的答案,您应该尝试使用parseFloat()而不是parseInt()

您需要更改标记以将
5
2
保留在不同的行中,以便在计算时不会将它们作为
52
一起提取

检查下面的演示

$('table tbody tr')。每个(函数(){
var$this=这个,
td2Value=$('td:nth child(2)'$this).text().trim().split(/\D+/);
$('span.result',$this).each(函数(索引,元素){
设v=$('td:nth child(1)'),$this.text().trim().split(/(\d+/).filter(v=>v);
如果(v[index]!=null&&v[index].trim()=“Mytext”){
v[指数]=TD2值[指数];
}
如果(v[index]!=null){
$(element.html(Math.round((td2Value[index]*100/v[index])| | 0)+'%');
}
});
})

可用的
出售
结果
10
5.
2.
2.

您的表标记是错误的。最好像这样更改表。并像下面那样添加js代码

单元格1和单元格2计算百分比
,然后用第三个单元格公布结果

$('table tbody tr')。每个(函数(){
var res=Math.round(parseInt($(this).find($(td:eq(1)).text())/parseInt($(this).find($(td:eq(0)).text())*100)
res=!isNaN(res)?res:0
$(this).find('td:eq(2)').text(res+'%'))
})

可用的
出售
结果
10
5.
我的文本
2.

你基本上卖出了10个中的52个,你期望的百分比是多少?@gurvinder372结果将显示10和5的百分比,但它不起作用。它必须显示50%,但它显示了错误的数字。由于我的htmlif中的空格或br标记,如果您想要10和5的百分比,则相应地更改标记。5和2应位于不同行的不同单元格中。@gurvinder372计算正确。只需在每个td中的每个
标记后按enter键即可。您可以看到正确的百分比。问题在于
使代码错误的似曾相识?我无法更改html代码。计算是正确的。只需在每个td中的每个
标记后按enter键即可。您可以看到正确的百分比。问题在于
这使代码出错。不是表标记,因为我需要在每个tdya中使用两个值。您的问题是正确的。但在表中这样使用是不对的。dom函数的使用会更加复杂。正确使用表标记,但我必须这样使用。有没有办法用
解决这个问题?如果不更改html结构,没有其他办法。因为在domya中只能关闭

无法访问。这只是
打断字符串的一个样式目的。它不是常规标记。如果你调用td html,它是52,因为

只是打断字符串。更好您可以切换一些其他标记,如
span
,或正确使用上面的表标记。我无法更改html格式。因为在某些情况下,我在每个td中需要两个值。因为在某些情况下,我在每个td中需要两个值。为什么?我在我的项目中需要它。您是否在每个
之后都按了enter键?没有,但我仍然不明白这与enter有什么关系以及为什么,因为在某些情况下,每个td中需要两个值?如果我可以使用html格式,为什么我在这里问这个问题?我有问题,所以我问了这个问题来解决它