IFE-2016-SP_task18_simulate_queue
by baishusama
HTML
<div class="panel">
<input type="text" id="queue-input" />
<div class="btns">
<input type="button" id="left-in" value="左侧入->|" />
<input type="button" id="right-in" value="右侧入|<-" />
<input type="button" id="left-out" value="左侧出<-|" />
<input type="button" id="right-out" value="右侧出|->" />
</div>
</div>
<ul class="queue">
这里现在一片荒芜 TVT
</ul>
<script src="task18.js"></script>
CSS
body {
font-family: 微软雅黑;
}
.panel {
padding: 10px;
}
.panel > input {
display: block;
width: 100%;
font-size: 16px;
}
.btns {
display: -webkit-flex;
display: -moz-flex;
display: -ms-flex;
display: -o-flex;
display: flex;
flex-flow: row nowrap;
justify-content: space-around;
padding: 10px 0;
}
.btns input {
/*display: block;*/
flex-grow: 1;
margin: 0 3px;
border: none;
border-radius: 2px;
padding: 6px;
background-color: lightpink;
}
.queue {
overflow: hidden;
margin: 0;
padding: 10px;
background-color: #ccc;
}
.queue li {
float: left;
display: block;
margin: 3px;
padding: 6px 10px;
background-color: deeppink;
color: #fff;
font-size: 16px;
}
JavaScript
// 利用 JS 的 Array 类型模拟队列
var queue = [];
var ul = document.getElementsByClassName("queue")[0];
var input = document.getElementById("queue-input");
var btns = document.getElementsByClassName("btns")[0];
function drawQueue() {
var res = "";
for (var i = 0; i < queue.length; i++) {
res += '<li class="index-' + i + '">' + queue[i] + "</li>";
}
ul.innerHTML = res;
}
function inputIsNum() {
var regExp = /^\d+$/;
if (regExp.test(input.value.trim())) {
return true;
}
return false;
}
btns.addEventListener("click", function(e) {
if (e.target.nodeName === "INPUT") {
var btnId = e.target.id;
var direction = btnId.split("-")[0];
var operate = btnId.split("-")[1];
if (operate === "in") {
if (inputIsNum()) {
var value = input.value.trim();
if (direction === "left") {
queue.unshift(value);
} else if (direction === "right") {
queue.push(value);
}
drawQueue();
} else {
alert("非法输入 :(");
}
input.value = "";
} else if (operate === "out") {
if (queue.length) {
var elemRemoved = null;
if (direction === "left") {
elemRemoved = queue.shift();
} else if (direction === "right") {
elemRemoved = queue.pop();
}
drawQueue();
alert("你去掉了" + (direction === "left" ? "左边的" : "右边的") + elemRemoved + "~");
} else {
ul.innerHTML = "这里现在一片荒芜 TVT";
alert("这里什么也没有~");
}
}
}
}, false);
ul.addEventListener("click", function(e) {
if (e.target.nodeName === "LI") {
var i = parseInt(e.target.className.split("-")[1]);
queue = queue.filter(function(elem, index) {
if (index !== i) {
...