Javascript 可以在逗号和点之间交换十进制分隔符吗?

Javascript 可以在逗号和点之间交换十进制分隔符吗?,javascript,Javascript,我有一个计算器,用来计算美元和欧元的价格,我在这里面临的最大问题是,使用逗号作为十进制分隔符不适用于标记。我已经读到,浏览器语言决定了这个特定输入类型的响应方式,但我想知道是否有一种方法可以用JS来改变这一点 function pplCalculator() { let endprice = document.getElementById('ppl-calculator--endprice'); let margin = document.getElementById('ppl-

我有一个计算器,用来计算美元和欧元的价格,我在这里面临的最大问题是,使用逗号作为十进制分隔符不适用于
标记。我已经读到,浏览器语言决定了这个特定输入类型的响应方式,但我想知道是否有一种方法可以用JS来改变这一点

function pplCalculator() {
    let endprice = document.getElementById('ppl-calculator--endprice');
    let margin = document.getElementById('ppl-calculator--margin');
    let basePrice = document.getElementById('ppl-calculator--val');
    let locale = document.querySelector('html').getAttribute('lang'); 
    let config = {
        dollar: {
            retailDefault: 18.99,
            basePrice: 13.99,
        },
        euro: {
            retailDefault: 19.99,
            basePrice: 14.99
        }
    }
    let currency = locale === 'en-US' ? 'dollar' : 'euro';

    function calculatorInit(){
        endprice.value = config[currency].retailDefault;
        basePrice.textContent = config[currency].basePrice;
        margin.textContent = (endprice.value - basePrice.textContent).toLocaleString(locale);
    }

    function updateCalculator(target, events, handler){
        events.map(function(event){
            target.addEventListener(event, () => {
                    let userInput = endprice.value;
                    let marginValue = userInput - basePrice.textContent;

                    if (marginValue > 0) {
                        margin.textContent = marginValue.toLocaleString(locale);
                    } else {
                        margin.textContent = 0;
                    }
            });
        })
    }
    calculatorInit();
    updateCalculator(endprice, ['keyup','change']);
}
pplCalculator();
这是我的HTML

<table>
  <tr>
      <td><strong>Retail Price</strong></td>
      <td><input id="ppl-calculator--endprice" type="number"></td>
  </tr>
  <tr>
      <td><strong>Profit</strong></td>
      <td><p id="ppl-calculator--margin"></p></td>
  </tr>
  <tr>
      <td><strong>Base Price</strong></td>
      <td><p id="ppl-calculator--val"></p></td>
  </tr>
</table>

零售价格
利润

基本价格

该页面有一个语言切换器,它使用OctoberCMS的activeLocale更改我的HTML标记中的语言属性。
locale
var使用该信息

实际的计算工作正常,但我似乎不知道如何在输入和Init函数中切换到欧元的EU格式。使用
element.toLocalString()
可以创建一个字符串(用于显示输出),但显然不适用于输入

容纳两个十进制分隔符的最佳方式是什么


我还要补充一点;我希望尽可能避免构建微调器框来增加和减少数字,因此使用数字输入字段而不是文本。如果这是完全不可避免的,我想应该这样做,但我想先仔细检查一下。

只要字符串替换句号中的逗号,如果一种货币使用了一个愚蠢的除名器,那么字符串在完成后将其替换回来。这是否回答了您的问题@AloisgMovingTocodidact.com是和否。我只是仔细阅读了一下,我想它回答了我的问题,即是否可以在浏览器语言之外更改语言,但它不能解决我的问题,因为我确实需要向上和向下按钮。也许我需要自己去做——如果可以的话,我真的很想避免。使用数字的输入类型文本。只需字符串替换句号中的逗号,如果货币使用愚蠢的除数器,则在完成时字符串将其替换回来。这是否回答了您的问题@AloisgMovingTocodidact.com是和否。我只是仔细阅读了一下,我想它回答了我的问题,即是否可以在浏览器语言之外更改语言,但它不能解决我的问题,因为我确实需要向上和向下按钮。也许我需要自己去做——如果可以的话,我真的很想避免。使用数字的输入类型文本格式。