<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link data-require="bootstrap@*" data-semver="3.3.6" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<link rel="stylesheet" href="style.css" />
<script data-require="jquery" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script data-require="bacon.js@*" data-semver="0.7.2" src="http://cdnjs.cloudflare.com/ajax/libs/bacon.js/0.7.2/bacon.js"></script>
<script data-require="underscore.js@*" data-semver="1.8.3" src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="script.js"></script>
</head>
<body>
<!-- Put your html here! -->
<div class="btn-group" role="group">
<button id="increase" class="btn btn-default btn-lg">
increase
</button>
<button id="decrease" class="btn btn-default btn-lg">
decrease
</button>
</div>
<table class="table2" border=1>
<tr>
<td>clickカウンタ</td>
<td id="score"></td>
</tr>
<tr>
<td>clickカウンタ(10の倍数のみ)</td>
<td id="scoreByTens"></td>
</tr>
</table>
</body>
</html>
// Add your javascript here
$(function(){
// クリックイベントに対して1を返すストリーム
const increase = $("#increase").asEventStream('click')
.map(val => 1);
// クリックイベントに対して-1を返すストリーム
const decrease = $("#decrease").asEventStream('click')
.map(val => -1);
// increaseとdecreaseを合流させてひとつのストリームにする
const merged = increase.merge(decrease);
// ストリームの中で共有される値を保持する
const score = merged.scan(0, (sum, value) => sum + value);
// フィルタリングして値を抽出する
const scoreByTens = score.filter(value => value % 10 === 0);
// 出力(消費)。値の変化に反応してストリームから値を受け取る
score.onValue(val => $("#score").text(val));
scoreByTens.onValue(val => $("#scoreByTens").text(val));
});
/* Put your css in here */
h1 {
color: red;
}
body{
background: #000000;
color: #ffffff;
}
#score,
#scoreByTens {
font-size: 50px;
}
.table2,
.btn-group{
margin:30px 0 0 30px;
}
td{
font-size: 40px;
padding:10px;
}