首页 > 解决方案 > 如何在javascript中将下拉列表中的所有值转换为百万/十亿?

问题描述

如何转换由这些示例中的代码生成的下拉列表中的所有输出数字?(例如:如果输出数字是 100 0000,我想将其显示为 1M(百万) Ex2:如果输出数字是 1000 000 000,我想将其显示为 1B(十亿))

window.f = function(event) {
    var ddlArray = new Array();
    var onoffelem=event.target;
    var ddl = document.getElementById('ddl');
    var select = document.getElementById('combo2');
    var combo3 = document.getElementById('combo3');
    var selectedVal=onoffelem.options[onoffelem.selectedIndex].text ;

    if (selectedVal == "LKR") {
        document.getElementById("combo2").options.length = 0;
        for (i = 0; i < combo3.options.length; i++) {
            ddlArray[i] = combo3.options[i].value;
        }
        for (i = 0; i < ddlArray.length; i++) {
            var option = document.createElement("OPTION"),
            txt = document.createTextNode("Rs. " + ddlArray[i] * 185000000);
            option.appendChild(txt);
            option.setAttribute("value", ddlArray[i] * 185000000);
            select.insertBefore(option, select.lastChild);
        }
    } 

    if (selectedVal == "USD") {
        document.getElementById("combo2").options.length = 0;
        for (i = 0; i < combo3.options.length; i++) {
            ddlArray[i] = combo3.options[i].value;
        }
        for (i = 0; i < ddlArray.length; i++) {
            var option = document.createElement("OPTION"),
            txt = document.createTextNode(ddlArray[i] * 20000);
            option.appendChild(txt);
            option.setAttribute("value",ddlArray[i] * 20000);
            select.insertBefore(option,select.lastChild);
        }
    }
}

 
<select id="ddl" onchange="f(event)" >
    <option value="185">USD</option>
    <option value="11">LKR</option>
    <option value="48">AED</option>
</select>
<select name="" id="combo2" >
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

<select name="" id="combo3" hidden="">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

标签: javascripthtmlarraysloopsfor-loop

解决方案


您可以使用与此类似的功能:

formatNumber(num) {
    if (num >= 1000000000) {
      return (num / 1000000000).toFixed().replace(/\.0$/, '') + 'B';
    }
    if (num >= 1000000) {
      return (num / 1000000).toFixed().replace(/\.0$/, '') + 'M';
    }
    if (num >= 1000) {
      return (num / 1000).toFixed().replace(/\.0$/, '') + 'K';
    }
}

推荐阅读