2014-01-09 133 views
0

我的目標是做一個非常簡單的貨幣換算。基本上,你輸入一個數字,然後按下一個按鈕,會顯示一個文字,上面寫着「x美元是y歐元」。再按一次按鈕,一個新的文本顯示在舊的文本中,而舊的文本顯示在新的文本下面。Javascript:簡單的貨幣換算器與以前的轉換

到目前爲止,當在字段中輸入內容時,它會在下面彈出,如果再次按下按鈕(具有相同或不同的值),它將成爲文本列表。

爲了澄清這是我在說什麼在這裏,來看看這個的jsfiddle:http://jsfiddle.net/w8KAS/5/

現在我想讓這個只有數字的工作,使數量(X)轉換時,按鈕按下下方旁邊顯示的一些配件的文字(如「x元爲y歐元」)

這是我的js代碼,檢查的jsfiddle完整的代碼(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; 
+0

所以你剛纔問如何檢查,看看一個字符串是否是一個有效的數字? – Pointy

+0

你只想把美元兌換成歐元嗎?你可以把你想要的結果的靜態例子看起來像 – gaurav5430

+0

是的,我只想將美元轉換爲歐元,非常簡單 –

回答

1

您的號碼驗證失敗。您的驗證的第一部分改成這樣:

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; 
    } 
    ... 

在這裏工作:http://jsfiddle.net/edgarinvillegas/w8KAS/6/

乾杯

+0

isNaN =「不是數字」。是不是你剛剛寫的說這樣的一些事情:如果「金額」的長度大於0 AND不是一個數字,運行此(:amount.className等...)我希望它要求是數字。也感謝您的回覆 –

+0

這就是爲什麼它在'isNaN'之前有'!',所以'!isNaN' =「是數字」(雙邏輯否定) –

+0

哦對不起,我得到了這個工作,謝謝你,謝謝很多! –

1

你需要一個轉換率(有APIs爲),然後你可以把它們相加在一個字符串

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 
}); 
0

要確保只有數字的工作,你可以使用isNaN功能測試變量amount.value。如果用戶的輸入是Not-a-Number,這將返回true,因此如果它返回false,則可以繼續進行轉換。

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

裏面你addconvert功能,您可以添加代碼將通過匯率乘以你的輸入量來獲得一個粗略的轉換。

function addconvert(){ 
    // ... 

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