操作表格資料---array.forEach()與array.some()
阿新 • • 發佈:2021-02-08
技術標籤:# js
實現效果:
程式碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.con_score {
width: 550px;
margin: 50px auto;
}
.con_name {
width: 550px;
margin: auto;
}
table {
/* 居中顯示 */
width: 500px;
margin: 10px auto;
/* 單元格單線 */
border-collapse : collapse;
/* 文字居中 */
text-align: center;
}
td,
th {
border: 1px solid #333;
}
/* 表頭的行的高和背景色 */
thead tr {
height: 40px;
background-color: #ccc;
}
</style>
</head >
<body>
<div class="con_score">
<span>按照價格查詢:</span>
<input type="text" id="start"> -
<input type="text" id="end">
<button id="scoreOk">確定</button>
</div>
<div class="con_name">
<span>按照姓名查詢:</span>
<input type="text" id="name">
<button id="nameOk">確定</button>
</div>
<table cellspacing="0">
<thead>
<tr>
<th>姓名</th>
<th>科目</th>
<th>成績</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script>
// 準備好學生的資料
var datas = [{
name: '小明',
subject: 'js',
score: 100
}, {
name: '小新',
subject: 'js',
score: 98
}, {
name: '小夏',
subject: 'js',
score: 99
}, {
name: '小玉',
subject: 'js',
score: 88
}, {
name: '小豬',
subject: 'js',
score: 0
}];
var tbody = document.querySelector('tbody');
setData(datas);
// 自定義函式為表格渲染資料
function setData(array) {
//先清空原來行的資料
tbody.innerHTML = '';
array.forEach(function(value) {
//console.log(value);這裡value是陣列中的每個物件
var tr = document.createElement('tr');
tr.innerHTML = '<td>' + value.name + '</td><td>' + value.subject + '</td><td>' + value.score + '</td>'
tbody.appendChild(tr);
});
}
// 1.篩選符合分數區間值的資料
var ipt_start = document.querySelector('#start');
var ipt_end = document.querySelector('#end');
var btn_score = document.querySelector('#scoreOk');
btn_score.onclick = function() {
// console.log(ipt_start.value);
// console.log(ipt_end.value);
var newArr = datas.filter(function(value) {
return value.score >= ipt_start.value && value.score <= ipt_end.value;
});
console.log(newArr);
//呼叫渲染資料方法:傳遞引數陣列newArr
setData(newArr);
}
//2.查詢某一個人(唯一)的資料
var ipt_name = document.querySelector('#name');
var btn_name = document.querySelector('#nameOk');
btn_name.addEventListener('click', function() {
var arr = [];
//查詢陣列中唯一的元素,使用some,效率更高(一旦找到,就終止迴圈)
datas.some(function(value) {
//value是陣列中的物件
if (value.name === ipt_name.value) {
arr.push(value);
return true;
}
});
//呼叫渲染資料方法:傳遞引數陣列arr
setData(arr);
})
</script>
</body>
</html>