tofixed(2)函数按名称应用于html类



如果只是var x(一个数字(,函数工作正常但是,当我试图按名称将相同的方法应用于html表类时,根本不起作用

<html>
<body>
<tr>
<td class="sal">45.515420</td>
</tr>
<script>
function myFunction() {

var sal = document.getElementsByClassName("sal");
for (i = 0; i < sal.length; i++) {
var currentValue = sal[i].innerHTML;
var newvalue = (sal.toFixed(2));
sal[i].innerHTML = newValue

}    
}
onload = myFunction()
</script>
</body>
</html>

提供的代码需要一些更改,我将尝试解决它们:

  • currentValue转换为数字,因为toFixed是数字的一部分

    var currentValue = Number(sal[i].innerHTML);
    
  • onload = myFunction(),我们可以调用函数在加载时运行它

    myFunction();
    
  • <td class='sal'>45.515420</td>封装在<table>中以使HTML成为有效的

    <table>
    <tr>
    <td class='sal'>45.515420</td>
    </tr>
    </table>
    

应用这些修复程序会产生:

function myFunction() {
var sal = document.getElementsByClassName("sal");
for (i = 0; i < sal.length; i++) {
var currentValue = Number(sal[i].innerHTML);
sal[i].innerHTML = currentValue.toFixed(2);
}    
}
myFunction();
<table>
<tr>
<td class='sal'>45.515420</td>
</tr>
</table>

首先,为了在td元素上使用document.getElementsByClassName,您需要将tr和td元素封装在table标记中。

其次,toFixed()是一种数字方法,在使用toFixed()之前,需要使用Number()将字符串转换为数字。

var sal = document.getElementsByClassName("sal");
for (i = 0; i < sal.length; i++) {
var currentValue = sal[i].innerHTML;
var newValue = Number(currentValue).toFixed(2);
sal[i].innerHTML = newValue;
}
<html>
<body>
<table>
<tbody>
<tr>
<td class="sal">45.515420</td>
<td class="sal">49.515420</td>
</tr>
</tbody>
</table>
</body>
</html>

除了所有其他好的建议外,这里的版本使用了更现代的JS实践。

  • querySelectorAll

  • forEach

  • 箭头函数表达式

const sals = document.querySelectorAll('.sal');
sals.forEach(sal => {
const number = Number.parseFloat(sal.textContent);
sal.textContent = number.toFixed(2)
});
<table>
<tbody>
<tr>
<td class="sal">45.515420</td>
</tr>
</tbody>
</table>

最新更新