我的下面的代码可以解决一个小问题。我已经坐了几个小时试图解决它。请有人帮帮我。
var price = new Array(12.121212, 45.334, 2.34, 0);
for (var i=0;i<price.length;i++){
roundPrice[i] = Math.round(price[i]*100)/100;
}
var s = document.getElementsByTagName('input');
for (var i=0;i<s.length;i++) {
if (s[i].className == 'price') {//changed this to get class instead
s[i].value = roundPrice[0];
}
}
令我头疼的是
s[i].value = roundPrice[1];
如果我声明了数组的实际索引,它会将该单个值放入指定的所有输入元素中。
另一方面,如果我使用这行代码(下面),我会在所有指定的元素中得到'undefined'。
s[i].value = roundPrice[i];
谢谢
答案 0 :(得分:0)
您在roundPrice中只有4个值(直接从price[]
获取它的值),而s[]
中的值可能更多,这是页面上的输入元素。
此外,您正在检查input
元素的ID是否为'price',然后才设置该值。这应该只发生一次,因为id属性对于DOM中的每个元素都是唯一的。
如果您在页面中只有4个输入元素,并且计划将price[]
中的值放入其中,请移除if (s[i].id == 'price') {
并关闭}
。
另外,您应该使用roundPrice[]
在顶部初始化var roundPrice = new Array();
数组。
答案 1 :(得分:0)
试试这个:
var price = [12.121212, 45.334, 2.34, 0]
var roundPrice = [0, 0, 0, 0];
而不是你的第一行。
PS我不确定whilch是数组new array()
或[]
jsFiddle:http://jsfiddle.net/wfSWQ/
此外,因为您正在设置ID。你可以做一个`document.getElementById(“price”),它将返回null或元素。 (只有1个元素)。哪个应该比循环遍历所有这些更好更快。
答案 2 :(得分:0)
如果我是你,我会这样做,假设价格和输入相同
var price = new Array(12.121212, 45.334, 2.34, 0);
var s = document.getElementsByTagName('input');
for (var i=0;i<price.length;i++){
var roundPrice = Math.round(price[i]*100)/100;
if (s[i].id == 'price') {
s[i].value = roundPrice;
}
}
希望帮助
:)