2011-06-08 30 views
0

我的代码如下所示,它可以解决一个小问题。我已经坐了几个小时试图修复它。任何人都可以帮助我。舍入值并将其放入另一个元素

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]; 

如果I状态阵列的实际指数,它把该单个值到指定的所有所述输入元件。另一方面,如果我使用这行代码(下面),我会在所有指定的元素中得到'未定义'的结果。

s[i].value = roundPrice[i]; 

谢谢

+0

它看起来你有一个以上的元素用'id =“price”'?这是不允许的,所以它可以给出意想不到的结果。 – Guffa 2011-06-08 00:48:39

+0

@Guffa:我已将它更改为class =“price”,但仍然存在相同的问题。 – Govnah 2011-06-08 09:47:44

回答

0

你只需要在roundPrice 4个值(得到它的直接从price[]值),并可能更s[],这是页面上的输入元素。

另外,您正在检查input元素是否具有“价格”标识,只有您设置该值。这应该只发生一次,因为id属性假设对于DOM中的每个元素都是唯一的。

如果您在页面中只有4个输入元素,并且您计划将price[]中的值放入其中,请删除if (s[i].id == 'price') {并关闭}

此外,您应该初始化您的roundPrice[]阵列顶部与var roundPrice = new Array();

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个元素)。哪个应该比循环遍历它们更好,更快。

+0

你是对的,但事情是我有超过1个输入元素,我想改变。我不认为你可以通过类获得元素:(。 – Govnah 2011-06-08 01:01:28

+0

@Govnah你需要使用像jQuery或Sizzle这样的框架,我推荐jQuery,我使用它很多,它很容易学习。我在第一行中写的代码无论如何都能工作。 – 2011-06-08 01:03:59

+0

jquery会很容易的完成它,但是我正在开发一个类项目,我不允许使用jquery。 – Govnah 2011-06-08 01:26:03

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; 
      } 

    } 

希望帮助

:)

相关问题