文章目錄
一、表格應用
以下測試均採用該HTML框架:
<body>
<table id="tab1" border="1px" style="width: 500px;">
<thead>
<td>ID</td>
<td>姓名</td>
<td>年齡</td>
</thead>
<tbody>
<tr>
<td>1</td>
<td>張三</td>
<td>25</td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>35</td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>31</td>
</tr>
<tr>
<td>4</td>
<td>馬六</td>
<td>25</td>
</tr>
<tr>
<td>5</td>
<td>小明</td>
<td>29</td>
</tr>
</tbody>
</table>
</body>
1.1 獲取
在傳統的JS當中如果我們需要獲取一個單元格的內容,如果不加ID我們會使用下面這種方法:
先選中table,再選中tbody,再選中tr,再選中td,都是使用的getElementByTagName
<script>
window.onload=function(){
var tab = document.getElementById('tab1');
//李四
alert(tab.getElementsByTagName('tbody')[0].getElementsByTagName('tr')[1].getElementsByTagName('td')[1].innerHTML);
}
</script>
但是JS中有專門針對選擇表格的屬性:例如
alert(tab.tBodies[0].rows[1].cells[1].innerHTML);
效果四一模一樣的,得出以下結論:
1.1.1 .tBodies[] 選中第幾個tbody
1.1.2 .rows[] 選中第幾個tr
1.1.3 .cells[] 選中第幾個td
另外,啊hi有
1.1.4 .tHead 選中表頭
1.1.5 .tFoot 選中表尾
需要注意的是,這表格只有一個表頭和表尾,所以沒有複數S 而其他三個有複數S,所以他們是數組,而這兩個只是單一的。
1.2 隔行變色
需要注意的是鼠標移出的時候。要返回原來的顏色,此處用了一個變量來保存當前對象的顏色
<script>
window.onload=function(){
var tab = document.getElementById('tab1');
var oldColor = '';
for(var i=0;i<tab.tBodies[0].rows.length;i++){
tab.tBodies[0].rows[i].onmouseover=function(){
oldColor=this.style.background;
this.style.background='green';
}
tab.tBodies[0].rows[i].onmouseout=function(){
this.style.background=oldColor;
}
if(i%2 == 0){
tab.tBodies[0].rows[i].style.background= '#ccc';
}else{
tab.tBodies[0].rows[i].style.background= 'white';
}
}
}
</script>
效果:
1.3 添加、刪除一行
添加使用方法 .createElement();
刪除使用方法 .removeChild();
1.4 搜索 高亮顯示
思路:使用循環判斷,表格內的元素是否與搜索框內的相等,如果相等 則設置background,不相等 則設置爲空格。
<script>
window.onload=function(){
var tab=document.getElementById('tab1');
var txt = document.getElementById('name');
var btn = document.getElementById('btn1');
btn.onclick=function(){
for(var i=0;i<tab.tBodies[0].rows.length;i++){
var tab_text = tab.tBodies[0].rows[i].cells[1].innerHTML;
var input_text = txt.value;
if(tab_text==input_text){
tab.tBodies[0].rows[i].style.background='green';
}else{
tab.tBodies[0].rows[i].style.background='';
}
}
}
}
</script>
1.4.1 .toLowerCase() 全部轉換爲小寫
此處我們把兩邊都轉化爲小寫,就可以忽略大小寫的問題了
<script>
window.onload=function(){
var tab=document.getElementById('tab1');
var txt = document.getElementById('name');
var btn = document.getElementById('btn1');
btn.onclick=function(){
for(var i=0;i<tab.tBodies[0].rows.length;i++){
var tab_text = tab.tBodies[0].rows[i].cells[1].innerHTML;
var input_text = txt.value;
if(tab_text.toLowerCase()==input_text.toLowerCase()){
tab.tBodies[0].rows[i].style.background='green';
}else{
tab.tBodies[0].rows[i].style.background='';
}
}
}
}
</script>
1.4.2 .search() 模糊搜索
實例:
<script>
var str = 'abcdefghijklmnopqrstuvwxyz';
alert(str.search('e'));//4
alert(str.search('bcde'));//1
alert(str.search('test'));//-1
</script>
1.4.3 split() 把字符串拆分爲數組
語法: .spalit(參數)
說明: split把對應的字符串按照指定的參數拆分成數組
例如:
<script>
var str='abc 123 張三';
var arr = str.split(' ');
alert(arr.length);//3
alert(arr);//abc,123,張三
</script>
實例:
此處我們用於匹配 空格間隔 的輸入
<body>
姓名:<input id="name" type="text">
<input id="btn1" type="button" value="搜索">
<table id="tab1" border="1px" style="width: 500px;">
<thead>
<td>ID</td>
<td>姓名</td>
<td>年齡</td>
<td>操作</td>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Blue</td>
<td>25</td>
<td><a href="javascript:;">刪除</a></td>
</tr>
<tr>
<td>2</td>
<td>張三</td>
<td>35</td>
<td><a href="javascript:;">刪除</a></td>
</tr>
<tr>
<td>3</td>
<td>李四</td>
<td>35</td>
<td><a href="javascript:;">刪除</a></td>
</tr>
<tr>
<td>4</td>
<td>王五</td>
<td>31</td>
<td><a href="javascript:;">刪除</a></td>
</tr>
<tr>
<td>5</td>
<td>馬六</td>
<td>25</td>
<td><a href="javascript:;">刪除</a></td>
</tr>
<tr>
<td>6</td>
<td>李偉</td>
<td>29</td>
<td><a href="javascript:;">刪除</a></td>
</tr>
<tr>
<td>7</td>
<td>趙四</td>
<td>29</td>
<td><a href="javascript:;">刪除</a></td>
</tr>
</tbody>
</table>
</body>
<script>
window.onload=function(){
var tab=document.getElementById('tab1');
var txt = document.getElementById('name');
var btn = document.getElementById('btn1');
btn.onclick=function(){
for(var i=0;i<tab.tBodies[0].rows.length;i++){
var tab_text = tab.tBodies[0].rows[i].cells[1].innerHT![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200427215952460.gif)
ML.toLowerCase();//轉換爲小寫
var input_text = txt.value.toLowerCase();
var arr = input_text.split(' ');//根據空格拆分 匹配空格間隔的輸入
tab.tBodies[0].rows[i].style.background='';
for(var j=0;j<arr.length;j++){
if(tab_text.search(arr[j])!=-1){
tab.tBodies[0].rows[i].style.background='green';
}
}
}
}
}
</script>
效果圖:
1.5 搜索 篩選
設計思路:點擊搜索後,先讓所有單元格隱藏,只有滿足要求才顯示。
<script>
window.onload=function(){
var tab=document.getElementById('tab1');
var txt = document.getElementById('name');
var btn = document.getElementById('btn1');
btn.onclick=function(){
for(var i=0;i<tab.tBodies[0].rows.length;i++){
var tab_text = tab.tBodies[0].rows[i].cells[1].innerHTML.toLowerCase();//轉換爲小寫
var input_text = txt.value.toLowerCase();
var arr = input_text.split(' ');//根據空格拆分 匹配空格間隔的輸入
tab.tBodies[0].rows[i].style.display='none';
for(var j=0;j<arr.length;j++){
if(tab_text.search(arr[j])!=-1){
tab.tBodies[0].rows[i].style.display='block';
}
}
}
}
}
</script>
1.5 li的排序
1.5.1 li移動到另一個li
思路:首先需要明白,appendChild是分兩步走的,第一步 是把元素從原有父級刪除,第二步纔是添加到新的父級
1、先把所有的li獲取到,然後使用sort方法,把li裏邊的數字排序。
2、把已經排序好的添加到當前ul的末尾。實際上是移動,先把最小的添加到末尾,再依次添加
<script>
window.onload=function(){
var ul1=document.getElementById('ul1');
var ul2=document.getElementById('ul2');
var btn1=document.getElementById('btn1');
btn1.onclick=function(){
var ul_li = ul1.getElementsByTagName('li');
// aLi.sort();//報錯
var arr=[];
for(var i =0;i<ul_li.length;i++){
arr[i]=ul_li[i];
}
//這裏數組裏邊已經排好序了,但是還沒有更新ul裏邊的位置
arr.sort(function(li1,li2){
var n1=parseInt(li1.innerHTML);
var n2=parseInt(li2.innerHTML);
return n1-n2;
});
//這裏按照從小到大的順序,追加到數組裏邊
for(var i=0;i<arr.length;i++){
//.appendChild方法 1、先把元素從原有父級上刪除 2、再添加到新的父級 (相當於移動)
ul1.appendChild(arr[i]);
}
}
}
</script>
效果圖:
1.6 表格排序
原理同上。
<body>
<input id="btn1" type="button" value="排序">
<table id="tab1" border="1px" style="width: 500px;">
<thead>
<td>ID</td>
<td>姓名</td>
<td>年齡</td>
<td>操作</td>
</thead>
<tbody>
<tr>
<td>3</td>
<td>Blue</td>
<td>25</td>
<td><a href="javascript:;"></a></td>
</tr>
<tr>
<td>2</td>
<td>張三</td>
<td>35</td>
<td><a href="javascript:;"></a></td>
</tr>
<tr>
<td>4</td>
<td>李四</td>
<td>35</td>
<td><a href="javascript:;"></a></td>
</tr>
<tr>
<td>1</td>
<td>王五</td>
<td>31</td>
<td><a href="javascript:;"></a></td>
</tr>
<tr>
<td>7</td>
<td>馬六</td>
<td>25</td>
<td><a href="javascript:;"></a></td>
</tr>
<tr>
<td>6</td>
<td>李偉</td>
<td>29</td>
<td><a href="javascript:;"></a></td>
</tr>
<tr>
<td>5</td>
<td>趙四</td>
<td>29</td>
<td><a href="javascript:;"></a></td>
</tr>
</tbody>
</table>
</body>
<script>
window.onload=function(){
var tab=document.getElementById('tab1');
var btn = document.getElementById('btn1');
btn.onclick=function(){
var arr=[];
for(var i=0;i<tab.tBodies[0].rows.length;i++){
arr[i]=tab.tBodies[0].rows[i];
}
arr.sort(function(tr1,tr2){
var n1 = parseInt(tr1.cells[0].innerHTML);
var n2 = parseInt(tr2.cells[0].innerHTML);
return n1-n2;
});
for(var i=0;i<arr.length;i++){
tab.tBodies[0].appendChild(arr[i]);
}
}
}
</script>
效果:
二、表單應用
2.1 onsubmit();
當表單提交是的時候觸發 onsubmit();
2.2 onreset();
當表單發生重置的時候觸發 onreset();
<body>
<form id="form" action="https://www.baidu.com">
<!-- 後臺是通過name來獲取數據的 -->
用戶名:<input type="text" name="user">
密碼: <input type="password" name="pwd">
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
</body>
<script>
window.onload=function(){
var form = document.getElementById('form');
form.onsubmit=function (){
alert('submit');
}
form.onreset=function (){
alert('reset');
}
}
</script>