[英]How to create Cash Register Effect using Pure Javascript?
I wanted to create a Cash Register Effect using Pure Javascript(With out using any libraries), 我想使用纯Javascript创建收银机效果(不使用任何库),
Here is the link for Cash register Effect which is implemented Using Mootools, 这是使用Mootools实现的收银机效果链接,
http://jsbin.com/ehuzes/edit#preview http://jsbin.com/ehuzes/edit#preview
I want to get this effect using raw Javascript. 我想使用原始Javascript获得这种效果。 It will be huge help, If somebody gives the solution.
如果有人提供解决方案,那将是巨大的帮助。
$('#number').on('change', function (e) {
$(this).cashregister($(this).val());
});
(function ($) {
$.fn.cashregister = function (num) {
var output = $('#output').html();
function intervalfunc(interval, num) {
var end = parseInt($('#number').html());
var cont = parseInt($('#output').html())
$('#output').html( cont + interval );
if ( $('#output').html() == num ) {
clearInterval(int);
return false;
}
}
if (num > output) {
var int = setInterval(function() { intervalfunc(1, num) }, 0.1);
}else if (num < output) {
var int = setInterval(function() { intervalfunc(-1, num) }, 0.1);
}else if (num == $('#output').html() ) {
// do nothing
}else{
alert("Invalid Input!");
}
};
})(jQuery);
http://jsfiddle.net/DuLjC/3/ -> working version of suggested fix http://jsfiddle.net/DuLjC/3/- >建议修复的工作版本
I like this one by Nevan Scott: https://codepen.io/nevan/pen/uBkEr 我喜欢Nevan Scott撰写的这篇文章: https ://codepen.io/nevan/pen/uBkEr
var total = 0; document.getElementById('entry').onsubmit = enter; function enter() { var entry = document.getElementById('newEntry').value; var entry = parseFloat(entry); currency = currencyFormat(entry); document.getElementById('entries').innerHTML += '<tr><td></td><td>' + currency + '</td></tr>'; total += entry; document.getElementById('total').innerHTML = currencyFormat(total); document.getElementById('newEntry').value = ''; return false; } function currencyFormat(number) { var currency = parseFloat(number); currency = currency.toFixed(2); currency = '$' + currency; return currency; }
body { background: #EEE; font-family: sans-serif; font-size: 20px; margin: 3em; padding: 0; } #register { width: 20em; margin: auto; } #ticket { background: white; margin: 0 1em; padding: 1em; box-shadow: 0 0 5px rgba(0,0,0,.25); } #ticket h1 { text-align: center; } #ticket table { font-family: monospace; width: 100%; border-collapse: collapse; } #ticket td, #ticket th { padding: 5px; } #ticket th { text-align: left; } #ticket td, #ticket #total { text-align: right; } #ticket tfoot th { border-top: 1px solid black; } #entry { background: #333; padding: 12px; border-radius: 10px; box-shadow: 0 0 5px rgba(0,0,0,.25); } #entry input { width: 100%; padding: 10px; border: 1px solid black; text-align: right; font-family: sans-serif; font-size: 20px; box-shadow: inset 0 0 3px rgba(0,0,0,.5); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } #entry input:focus { outline: none; border-color: rgba(255,255,255,.75); }
<div id="register"> <div id="ticket"> <h1>Thank You!</h1> <table> <tbody id="entries"> </tbody> <tfoot> <tr> <th>Total</th> <th id="total">$0.00</th> </tr> </tfoot> </table> </div> <form id="entry"> <input id="newEntry" autofocus placeholder="How Much?"> </form> </div>
use an onclick function on a button or something, which should get the number (value from maybe a text box) and to send that variable to a defined function which uses .innerHTML on a div to change the number value, then you use SetInterval
function to make the number go either up or down by 1 each interval. 在按钮等上使用onclick函数,该函数应获取数字(可能是文本框中的值),并将该变量发送到已定义的函数,该函数在div上使用.innerHTML来更改数字值,然后使用
SetInterval
函数使数字每间隔增加或减少1。 then use clearInterval
when the number has been reached. 然后在达到数字后使用
clearInterval
。
maybe something like: 也许像这样:
<div id = "container">0</div>
<input type = 'text'
id = 'number' />
<input type = 'button'
value = 'change amount'
onclick = "var num = document.getElementById('number').value;
cashregister(num);" />
for the HTML and: 用于HTML和:
<script type = "text/javascript">
function cashregister(num) {
var cont = document.getElementById('container').innerHTML;
if (num < cont) {
var int = setInterval("intervalfunc(1)", (interval_time_in_miliseconds));
function intervalfunc(num) {
var end = document.getElementById('number');
var cont = document.getElementById('cont').innerHTML;
cont.innerHTML = cont + num;
if (cont == end) {
clearInterval(int);
}
}
} else if (num > cont) {
var int = setInterval("intervalfunc(-1)", (interval_time_in_miliseconds));
function intervalfunc(num) {
var end = document.getElementById('number');
var cont = document.getElementById('cont').innerHTML;
cont.innerHTML = cont + num;
if (cont == end) {
clearInterval(int);
}
}
} else if (num == cont) {
//do nothing
} else {
alert("invalid input!");
}
}
</script>
I'm not sure if this exact code will work but what you want is something along these lines. 我不确定这个确切的代码是否会起作用,但是您想要的是这些方面的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.