【问题标题】:Why doesn't Javascript put some respeck on my input value?为什么 Javascript 不对我的输入值施加一些影响?
【发布时间】:2016-05-19 18:13:22
【问题描述】:

我目前正在开发一款预算软件,但遇到了这个奇怪的错误。首先是我的代码:

<label class="label label-success">Choose your budget</label><br/><br/>

<div class="input-group-addon">€</div>
<input type="number" min="10" max="25000" maxlength="5" step="10" class="form-control" id="Input-budget" placeholder="Amount" onkeyup="this.value=this.value.replace(/[^\d]/,'')" onchange="budCalculate(this.value)">

这是输出行:

<li>
  <strong>
  Total cost: <span id="cost_eur">€0.00 </span> (<span id="cost_usd" class="small">$0.00</span>)
  </strong>
</li>

这里是 Javascript:

function budCalculate(budget_amount) {
  var budget = budget_amount;
  cost_eur.innerHTML = "€"+((budget).toFixed(2);
  cost_usd.innerHTML = "$"+ (budget * 1.13 ).toFixed(2);
}

应该把输入的值放在输出行上。

onkeyup 是为了防止人们输入字母。

我尝试了各种变体,有趣的是几乎相同的代码在外观相似的页面上运行。

为什么 JavaScript 不重视我的价值?

【问题讨论】:

  • 函数budCalculate 被调用?请尝试使用 console.log 或里面的任何东西。
  • 它说:(budget).toFixed 不是一个函数。 (在 '(budget).toFixed(2)' 中,'(budget).toFixed' 是未定义的)但那是因为我在预算之前忘记了一个 '('。修复后代码仍然无法工作。
  • 嗯,不,它说:TypeError:budget.toFixed 不是函数。 (在'budget.toFixed(2)'中,'budget.toFixed'未定义)
  • 控制台日志说; ReferenceError:找不到变量:budCalculate
  • @jo8691 respeck 是 link

标签: javascript jquery jquery-ui jquery-events


【解决方案1】:

我怀疑问题在于budget 不是数字对象。 this.value 将传递一个字符串对象。我建议改变你的功能:

function budCalculate(budget_amount) {
  var budget = 0;
  console.log(typeof budget_amount);
  budget = parseFloat(budget_amount);
  cost_eur.innerHTML = "€" + budget.toFixed(2);
  cost_usd.innerHTML = "$" + ( budget * 1.13 ).toFixed(2);
  return budget;
}

您现在可以看到正在传递的对象类型。 parseFloat() 应该可以纠正这个问题。

工作示例:https://jsfiddle.net/Twisty/bqjg50sb/

【讨论】:

  • 繁荣就是这样,你赢了,案件结案,非常感谢!
  • @luissimo 很高兴听到这个消息。
猜你喜欢
  • 1970-01-01
  • 2022-10-23
  • 2021-08-04
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多