【问题标题】:convert a string to a number, do math on it, then convert it back and give the span that value as a string将字符串转换为数字,对其进行数学运算,然后将其转换回来并将该值作为字符串给出 span
【发布时间】:2013-12-09 00:45:03
【问题描述】:

我正在尝试从文本框中获取输入的值并将它们转换为字符串,合计金额,然后将 <span> 的 innerHTML 设置为该值。

function addBills(){
    var 
        hundreds = parseInt($("#input100").innerHTML(),10)*100;
        fifties = parseInt($("#input50").innerHTML(),10)*50;
        twenties = parseInt($("#input20").innerHTML(),10)*20;
        tens = parseInt($("#input10").innerHTML(),10)*10;
        fives = parseInt($("#input5").innerHTML(),10)*5;
        ones = parseInt($("#input1").innerHTML(),10);
        regTotal = hundreds+fifties+twenties+tens+fives+ones;
    window.alert(regTotal);
    /*var regTotal = (($("#input100").innerHTML * 100)+($("#input50").innerHTML * 50)+($("#input20").innerHTML * 20)+($("#input10").innerHTML * 10)+($("#input5").innerHTML *5)+($("#input1").innerHTML));*/
    for(var counter = 0;counter<regTotal;counter++){
        regString = regTotal.toString();
        $("#totalCount").innerHTML("regTotal");
    }
};

【问题讨论】:

  • 你有什么问题?
  • innerHTML() 应该是 html()。您正在混合使用 jQuery 和纯 js。
  • innerHTML 不是函数。
  • 这些是输入字段。我想要将这些值转换为数字所需的一切,进行必要的数学运算,然后将其转换回字符串并让我的 标记显示该值。很抱歉让我很难弄清楚如何提问
  • span.innerHTML=''+(Number(elm_a.value)+Number(elm_b.value)); 等等。瞧。 PS:完全损坏的 var 背后的想法是什么(只有 hundreds 是本地的)?

标签: javascript jquery parsing tostring


【解决方案1】:

你做错了

对于初学者。

function addBills(){
    var 
        hundreds = parseInt($("#input100").innerHTML(),10)*100;

hundreds 是唯一的本地变量。所有其他都是全球性的。修复:在一个 var 语句中使用逗号而不是分号来分隔变量。

其次,输入字段有value(不是innerHTML,尤其是没有innerHTML()作为函数)。
输入字段值始终是文本。可以通过Number(string)parseInt(string, radix/base)(或在字符串前面添加+)将它们转换为数字。

最后,一旦你有了 span-element,你只需这样做:elm_span.innerHTML=yourNumber; 和 bob 是你的叔叔!

编辑:
您当前的循环没有意义..我的意思是,如果regTotal 是现金总额...并且您有一个具有唯一ID totalCount 的跨度...这完全没有意义(就像尝试转换@ 987654333@ 串几千次)

你可能想要这样的东西:

function addBills(){
   var hundreds = Number(document.getElementById('input100').value)*100
   ,   fifties = Number(document.getElementById('input50').value)*50
   ,   twenties = Number(document.getElementById('input20').value)*20
   ,   tens = Number(document.getElementById('input10').value)*10
   ,   fives = Number(document.getElementById('input5').value)*5
   ,   ones = Number(document.getElementById('input1').value)
   ,   regTotal = hundreds+fifties+twenties+tens+fives+ones
   ; //end local
   document.getElementById('totalCount').innerHTML=regTotal;
}

工作示例fiddle here

希望这会有所帮助!

【讨论】:

  • 该值有效,我可以让警报显示正确的值(我这样做只是为了测试数学函数)但它没有改变跨度。
  • 我希望它显示从 1 到总数的数字。我本来打算把它改成柜台的,这实际上是我错过的。
  • for(var counter = 0;counter
  • 是否要将跨度值计数到总值?像一个快速运行的时钟?在这种情况下,您需要进行超时,因为(我希望)您的计算机的计数速度比它可以显示的速度快(或者如果值被多次更新,您会看到什么,但事实并非如此,它通常会呈现最终结果,因此超时(或间隔)。
  • 现在让它显示结果就可以了
猜你喜欢
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-10
  • 1970-01-01
  • 2016-12-11
  • 2019-10-16
  • 1970-01-01
  • 2016-07-02
相关资源
最近更新 更多