Javascript:具有以前转换的简单货币转换器

Javascript:具有以前转换的简单货币转换器,javascript,converter,currency,Javascript,Converter,Currency,我的目标是做一个非常简单的货币转换器。基本上,你输入一个数字,然后按下一个按钮,就会显示一个文本,上面写着“x美元是y欧元”。再次按下按钮,新文本显示在旧文本所在的位置,旧文本显示在新文本下 到目前为止,当在字段中输入某个内容时,它会在下面弹出,如果您再次按下按钮(使用相同或不同的值),它将成为一个文本列表 为了澄清我在这里说的是什么,请看一下JSFIDLE: 现在我想让它只工作数字,这样当按下按钮并在下面显示一些合适的文本(如“x美元是y欧元”)旁边时,数字(x)就会被转换 这是我的js代码,

我的目标是做一个非常简单的货币转换器。基本上,你输入一个数字,然后按下一个按钮,就会显示一个文本,上面写着“x美元是y欧元”。再次按下按钮,新文本显示在旧文本所在的位置,旧文本显示在新文本下

到目前为止,当在字段中输入某个内容时,它会在下面弹出,如果您再次按下按钮(使用相同或不同的值),它将成为一个文本列表

为了澄清我在这里说的是什么,请看一下JSFIDLE:

现在我想让它只工作数字,这样当按下按钮并在下面显示一些合适的文本(如“x美元是y欧元”)旁边时,数字(x)就会被转换

这是我的js代码,请检查JSFIDLE完整代码(html、js、css)

有什么建议吗

var count = 0;

function validate() {

   var amount = document.querySelector("#amount");

   if(amount.value.length > 0) {
       amount.className = 'correct';
   }

   else {
    amount.className = 'empty';
   }

   if (document.querySelector('.empty')) {
    alert('Något är fel');
   }

   else {
   addconvert(amount.value);
   }    
}

function addconvert(amount) {

   var table = document.querySelector('#tbody');
   var tr = document.createElement('tr');
   var amountTd = document.createElement('td');


   var amountTextNode = document.createTextNode(amount);

   amountTd.appendChild(amountTextNode)
   tr.appendChild(amountTd);

   table.insertBefore(tr, table.firstChild);

   count++;     
}



var button = document.querySelector(".button");

button.onclick = validate;

您需要一个转换率(有),然后您可以将它们添加到一个字符串中

var convRate = 1.3; 
var amountTextNode = document.createTextNode(amount + " dollars is " + amount*convRate + " euros");
关于API,雅虎会告诉你你需要什么,甚至不需要登录

$.ajax({
  url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22USDEUR%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback="
}).done(function(data) { 
  convRate = data.query.results.rate.Rate
});

要确保只有数字有效,可以使用
isNaN
函数测试变量
amount.value
。如果用户的输入不是数字,则返回true,因此如果返回false,则可以继续转换

if (!isNaN(amount.value)){
  addconvert(+amount.value)  // the plus symbol converts to a number
} else {
  // display error here
}
function addconvert(){
  // ...

  var euros = 0.74 * amount
  var text = amount + ' dollars is ' + euros + ' euros'
  var amountTextNode = document.createTextNode(text);
在您的
addconvert
函数中,您可以将代码添加到将输入金额乘以汇率以获得粗略的转换

if (!isNaN(amount.value)){
  addconvert(+amount.value)  // the plus symbol converts to a number
} else {
  // display error here
}
function addconvert(){
  // ...

  var euros = 0.74 * amount
  var text = amount + ' dollars is ' + euros + ' euros'
  var amountTextNode = document.createTextNode(text);

您的号码验证失败。将验证的第一部分更改为:

 function validate() {

    var amount = document.querySelector("#amount");
    var amountNum = parseFloat(amount.value);  //This is the numeric value, use it for calculations

    if(amount.value.length > 0 && !isNaN(amountNum) ) {
        amount.className = 'correct';
        amount.value = amountNum;
    }
    ...
在这里工作:


干杯

那么,您是在问如何检查字符串是否为有效数字?您是否只想将美元转换为欧元?你能举一个静态的例子来说明你希望结果看起来像什么吗?眼睛,我只想把美元转换成欧元,非常简单。你刚才写的不是这样说的吗:如果“amount”的长度大于0并且不是一个数字,那么运行这个(:amount.className等等)。我希望它是数字。也谢谢你的回复,这就是为什么它有
之前是NaN
,所以
!isNaN
=“是数字”(双重逻辑否定)哦,是的,对不起,多亏了你,我才有这个功能,所以非常感谢!欢迎:)。我建议您学习jQuery,使用jQuery,这一切都非常简单;)