如何将多个Jquery ID传递给一个函数?

时间:2019-01-11 18:28:50

标签: javascript jquery

我有两个以上与货币有关的字段,我需要对其进行格式化。我已经编写了format函数,但是到目前为止我只能传递一个字段/ ID,即收入传递给JS函数。如何将多个ID传递给该通用函数,以便可以使用该通用函数格式化字段。

我想将通过document.getElementById获得的收入和交易价值传递给formatCurrency函数?如何将多个ID传递给一个函数并将其设置为ID?我尝试设置以下方式

 $("#Income").val(formatCurrency($("#Income").val())); 

但是没用

function formatCurrency(amt){
  amt = amt.replace("$", "");

    if(amt &&  amt.split(".").length <= 2)
    {
        var formatter = new Intl.NumberFormat('en-US', 
        {
          style: 'currency',
          currency: 'USD',
          minimumFractionDigits: 2
        });
        amt = formatter.format(amt);
    }
     document.getElementById("Income").innerHTML=amt;
     //document.getElementById("Trade").innerHTML=amt;
 }
    formatCurrency(document.getElementById("Income").innerHTML);
//formatCurrency(document.getElementById("Trade").innerHTML);

如果收入= 8000输出应为$ 8000.00 并且如果Trade = 900的输出应该是$ 900.00 我只能为收入而不是贸易实现目标,因为我无法将贸易传递给formatCurrency。

2 个答案:

答案 0 :(得分:1)

因此,只需阅读文本并将其输出到函数中即可。传递选择器。

function formatCurrency(selector) {
  var elem = document.querySelector(selector)
  var amt = elem.textContent.replace("$", "");
  if (amt && amt.split(".").length <= 2) {
    var formatter = new Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: 'USD',
      minimumFractionDigits: 2
    });
    amt = formatter.format(amt);
  }
  elem.textContent = amt;
}

formatCurrency("#one")
formatCurrency("#two")
<div id="one">$.99</div>
<div id="two">$1200.00</div>

如果要使其匹配,则选择器可以匹配多个对象,那就是带有循环的querySelectorAll

function formatCurrency(selector) {
  document.querySelectorAll(selector).forEach(function (elem) {
    var amt = elem.textContent.replace("$", "");
    if (amt && amt.split(".").length <= 2) {
      var formatter = new Intl.NumberFormat('en-US', {
        style: 'currency',
        currency: 'USD',
        minimumFractionDigits: 2
      });
      amt = formatter.format(amt);
    }
    elem.textContent = amt;
  })
}

formatCurrency(".money")
<div class="money">$.99</div>
<div class="money">$1200.00</div>

答案 1 :(得分:0)

这是一个虚拟函数,可以帮助您将任意数量的参数发送给函数

function multipleArgs(){
     for (var i=0; i < arguments.length; i++)
      console.log(arguments[i])
   }; 
// Call above function
multipleArgs(1,2)

但是对于您的问题,您可以将对象传递给

之类的函数。
{type:"trade",value:$("#Trade").val()} 
{type:"Income",value:$("#Income").val()} 

并修改您的常用功能

function formatCurrency(amt){
    switch(amt.type){
     "Income":
            // do Income related work
            break;
    "Trade":
            //do Trade related work
            break;
    default: break;

    }

 }