2014-01-09 7 views
0

то, что я намереваюсь сделать, - очень простой конвертер валют. В принципе, вы вводите число и нажимаете кнопку, отображается текст, в котором говорится: «x долларов - это евро». Нажмите кнопку еще раз, появится новый текст, где был старый, и старый отображается под новым.Javascript: простой конвертер валют с предыдущими конверсиями

Я пришел так далеко, что когда что-то введено в поле, оно появляется внизу, и если вы снова нажмете кнопку (с тем же или другим значением), она станет списком текста.

Чтобы выяснить, что это я здесь говорю, посмотрите на эту jsfiddle: http://jsfiddle.net/w8KAS/5/

Теперь я хочу сделать так, чтобы только номера работы, и таким образом, что число (х) преобразуется при кнопка нажата и отображается внизу рядом с каким-фитингом текста (как «х долларов есть у евро»)

Это мой 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 = "is not a Number". Не то, что вы только что написали, говорит следующее: если длина «суммы» больше 0 И не является числом, запустите это (: amount.className и т. Д.). Я хочу, чтобы он требовал быть числом , Также спасибо за ответ –

+0

Вот почему у него есть '!' Перед 'isNaN', поэтому'! IsNaN' = "is number" (двойное логическое отрицание) –

+0

О да, простите, я получил это, чтобы работать благодаря вам, поэтому спасибо много! –

1

Вам нужен коэффициент конверсии (есть APIs для этого), а затем вы можете просто добавить их в строку

var convRate = 1.3; 
var amountTextNode = document.createTextNode(amount + " dollars is " + amount*convRate + " euros"); 

Что касается API, Yahoo будет сказать вам, что вам нужно без даже необходимость входа в

$.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

чтобы убедиться, что только номера работы, вы можете проверить переменную amount.value с помощью функции isNaN. Это вернет true, если пользовательский ввод Not-a-Number, поэтому, если он возвращает 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); 
Смежные вопросы