【问题标题】:javascript syntax error (limit 2 decimal)javascript 语法错误(限制 2 位小数)
【发布时间】:2016-03-20 02:21:09
【问题描述】:

我做了这个:

document.getElementsByName("price")[0].value.replace(".", ",").toFixed(2)

我正在尝试将值限制为小数点后两位。

但是.toFixed(2) 我的脚本不起作用,我做错了什么?

完整代码:

<script>

  var jq111 = jQuery.noConflict();

   jq111(function(){

   jq111('#_regular_price').on('input', function(){

   document.getElementsByName("duel-cost")[0].value = document.getElementsByName("_regular_price")[0].value.replace(",", ".");

   if(jq111("#prized").val().length > 1) {
    var discount = document.getElementsByName("discount")[0].value;
    var cost = document.getElementsByName("duel-cost")[0].value;
     document.getElementsByName("_sale_price")[0].value = cost - (cost * (discount / 100));
    }
  })
});

<script>

 function updateInput(){

  document.getElementsByName("duel-cost")[0].value = document.getElementsByName("_regular_price")[0].value.replace(",", ".");

   var discount = document.getElementsByName("discount")[0].value;

   var cost = document.getElementsByName("duel-cost")[0].value;

   document.getElementsByName("price")[0].value = cost - (cost * (discount / 100));

   document.getElementsByName("_sale_price")[0].value = document.getElementsByName("price")[0].value.replace(".", ",").toFixed(2);

}

</script>

新:

 var element = document.getElementsByName("price")[0];

 element.value = parseFloat(element.value.replace(/\./g, '').replace(',', '.')).toFixed(2).replace('.', ',');

 document.getElementsByName("_sale_price")[0].value = element;

【问题讨论】:

  • 如果您详细说明“破坏我的脚本”会有所帮助。你已经给出了有效的语法,所以还有其他事情发生。
  • 现在我粘贴我的完整代码

标签: javascript jquery


【解决方案1】:

字符串没有toFixed 方法;数字做。输入的value 是一个字符串,这是您在调用replace 时所依赖的字符串。

如果 value 包含 JavaScript 规则中的有效数字,您可以这样做:

var element = document.getElementsByName("price")[0];
element.value = parseFloat(element.value).toFixed(2);

我不知道你想用replace 做什么,所以我把它省略了。 你的完整代码更有意义。在您的原始文件中,您将 . 替换为 ,。但是您的完整代码将, 替换为.,这是有道理的,所以:

var element = document.getElementsByName("price")[0];
element.value = parseFloat(element.value.replace(',', '.')).toFixed(2).replace('.', ',');

注意我是如何把 , 放回去的。

您可能还想将. 用作千位分隔符。正确地做到这一点有点复杂,但我们可以删除它们:

var element = document.getElementsByName("price")[0];
element.value = parseFloat(element.value.replace(/\./g, '').replace(',', '.')).toFixed(2).replace('.', ',');

【讨论】:

  • 我在我的帖子中添加了一个名为“new”的新版本。输入说:[object HTMLInputElement]
  • @EugenioSegala:那么您在某处缺少.value编辑: 是的,最后。请记住,element元素element.value 是它的 value 属性。
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 2014-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多