JSFiddle - React, Tailwind, and code Playground
HTML
<title>fizzbuzz</title>
<div id="fizzbuzz">
<fieldset>
<legend>fizzbuzz</legend>
<input class="num" placeholder="数をいれてね"></input><button class="run">run</button>
</fieldset>
<div class="display"></div>
<div>
CSS
#fizzbuzz ol {
color: #0F0;
background-color: #000;
padding: 2em;
font-size: medium;
font-family: 'Monaco', 'Consolas', 'Courier New', 'FreeMono', monospace;
}
#fizzbuzz ol li {
list-style-type: none;
}
#fizzbuzz ol li.fizz,
#fizzbuzz ol li.buzz {
visibility: collapse;
font-size: 0;
}
#fizzbuzz ol li.fizz:before {
visibility: visible;
display: inline;
font-size: medium;
content: "Fizz";
}
#fizzbuzz ol li.buzz:after {
visibility: visible;
display: inline;
font-size: medium;
content: "Buzz";
}
JavaScript
var fizzbuzz = function(){
var fizz = "fizz", buzz = "buzz";
var fzbz = fizz + " " + buzz;
var isFizz = function(n){ return n % 3 === 0; };
var isBuzz = function(n){ return n % 5 === 0; };
var isFzBz = function(n){ return isFizz(n) && isBuzz(n); };
var toFizzBuzz = function(n){
return (isFzBz(n)) ? fzbz
: (isFizz(n)) ? fizz
: (isBuzz(n)) ? buzz
: String(n) ;
};
var makeArray = function(n){
var array = [];
console.log(n);
for(var i = 1; i <= n; i++){ array[i] = i; }
return array;
};
var numToListelm = function(i, n){
var li = $('<li></li>');
li.text(i);
(i === parseInt(n)) || li.addClass(n);
return li;
}
var display = function(array){
var object = $('#fizzbuzz .display');
var olist = $('<ol></ol>');
var len = array.length;
for(var i = 1; i < len; i++){
var elm = numToListelm(i, array[i]);
olist.append(elm);
}
object.html(olist);
}
return function(str){
var n = parseInt(str);
var array = makeArray(n).map(toFizzBuzz);
console.log(array);
display(array);
};
}();
$('#fizzbuzz .run').click(function(){fizzbuzz($('#fizzbuzz input.num').val());});