【发布时间】:2021-11-06 23:50:36
【问题描述】:
当我尝试将数字传递给我的函数参数时,我似乎无法弄清楚为什么 parseInt() 在我的代码中无法正常工作。它似乎在我的数组和函数返回值中不断出现 NaN。
我想要做的是当值被键入输入字段时,这两个值的索引百分比出现在 HTML 中并将值存储在数组中。我为此使用了一个函数,因为我想要进行 20 多个出口计算。我也在努力重构这段代码,因为我没有太多的 JS 经验。任何帮助将不胜感激。
这是我的 HTML。
function outletIndex(actual, design) {
let result1 = actual / design * 100;
var indexArray = [];
indexArray.push(result1);
console.log(indexArray, result1);
if (!isNaN(result1)) {
document.getElementById("percentage").textContent = `${result1.toFixed(1)}%`;
}
}
const x = parseInt(document.getElementById("outlet_actual_1" ).valueAsNumber);
const y = parseInt(document.getElementById("outlet_design_1").valueAsNumber);
const outlet1Index = outletIndex(x, y);
<table>
<tr>
<div class="form-group row 1" id="outlets1">
<td><label
>Outlet Design</label>
<input
name = "outlet 1 design"
class="form-control design_1"
id="outlet_design_1"
type="number"
placeholder="Outlet 1 Design"
/>
</td>
<td><label
>Outlet Actual</label>
<input
name="outlet 1 actual"
class="form-control actual_1"
id="outlet_actual_1"
type="number"
placeholder="Outlet 1 Actual"
onblur="outletIndex();"
/>
</td>
<td><label
>Outlet Balance</label>
<input
name="outlet_balance"
class="form-control"
input value=""
id="outlet_balance_1"
type="text"
placeholder="Outlet 1 Balance"
/>
</td><td>
<div class="proportion" id="percentage">
</div>
</td>
</div>
</tr>
【问题讨论】:
-
<input>元素没有任何内容。您正在寻找.value属性。 -
另外,将基数传递给
parseInt以确保它正确转换字符串。 -
请使用
parseIntwith the second parameter,10。考虑改用Number或parseFloat,或者专门针对<input>s,.valueAsNumber。您已经拥有<input type="number">,因此只需获取document.getElementById("outlet_actual_1").valueAsNumber等即可。 -
好的 - 我会试试的!
-
好的,所以我尝试了 .valueAsNumber 和 Number(document.getElementById("outlet_actual_1").valueAsNumber;
标签: javascript arrays function nan parseint