JS DOM案例1

JS DOM

这系列文章里记录的多半是案例,基础语法很少

获取元素

1. document.getElementById(id)
2. Document.getElementsByTagName()
3. Document.getElementsByClassName()
4. document.querySelector()
			//查找第一个匹配 class属性的html元素
			//这个例子中,会返回当前文档中第一个类名为 "myclass" 的元素:
			var el = document.querySelector(".myclass");
			var el = document.querySelector("#myclass");//通过id
			var el = document.querySelector("li");//标签
			
			//一个更复杂的选择器
			//选择器也可以非常强大,如以下示例所示.
			//这里, 一个class属性为"user-panel main"的div元素<div>(<div class="user-panel main">)内包含一个name属性为"login"的input元素<input> (<input name="login"/>) ,如何选择,如下所示:
			
			var el = document.querySelector("div.user-panel.main input[name='login']");
5.document.querySelectorAll()

事件与操作元素

常见事件触发函数

1. 改变元素内容
	区别
	element.innerText: 	不识别HTML标签, 去除空格和换行
		var div = document.querySelector('div')
		div.innerText = '测试'
	element.innerHTML:识别html,推荐,标准,保留空格和换行
		var div = document.querySelector('div')
		div.innerHTML = '<strong>测试</strong>' //可以识别
	可读写属性,获取属性内容
	console.log(div.innerText)
	console.log(div.innerHMTL)

2. 表单元素属性设置
	利用DOM可以操作如下表单元素属性:
	<button>按钮</button>
	<input type="text" value="请输入内容">
	<script>
	var btn = document.querySelector('button')
	var input = document.querySelector('input')
	btn.onclick = function (){
		input.value='点击切换了内容'
	  this.disabled=true // btn.disabled = true,this指向的是事件函数的调用者
	}



</script>

表单案例,显示隐藏密码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .box{
        position: relative;
        width: 400px;
        border-bottom: 1px solid #ccc;
        margin: 100px auto;
    }
    .box input {
        width: 370px;
        height: 30px;
        border: 0;
        outline: none;
    }
    .box img {
        position: absolute;
        top: 2px;
        right: 2px;
        width: 24px;
    }
  </style>
</head>

<body>
  <div class="box">
    <label>
      <img src="../images/eye.png" id="eye">
    </label>
    <input type="password" id="password">
  </div>
  <script>
    // 1.获取元素
    let eye = document.getElementById('eye')
    let pwd = document.getElementById('password')

    // 2.注册事件,处理程序
    let flag = 0
    eye.onclick = function () {
    	if (flag === 0) {
		    pwd.type = 'text'
		    eye.src = '../images/eye2.png'
        flag = 1
	    } else {
    		pwd.type = 'password'
		    eye.src = '../images/eye.png'
        flag = 0
      }
    }

  </script>
</body>
</html>

3. 操作元素样式

// 基本用法
div.onclick = function () {      	  
	this.style.backgroundColor = 'purple'
  this.style.width = '250px'
}
/***失去焦点、获得焦点 案例***/
	let txt = document.querySelector('input')
	txt.onfocus = function () {
		if (this.value === '手机') {
			this.value = ''
		}
		this.style.color='#333'
	}

	txt.onblur = function () {
		if (this.value === '') {
			this.value = '手机'
		}
		this.style.color='#999'
	}

案例:排它思想

<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script>
var btns = document.getElementsByTagName('button')
for (let i = 0; i < btns.length; i++) {
  btns[i].onclick = function () {
	  for (let j = 0; j < btns.length; j++) {
      btns[j].style.backgroundColor = ''
	  }
	  this.style.backgroundColor = 'pink'
  }
}

案例:表格隔行变色

 <table>
    <thead>
      <tr>
        <th>代码</th>
        <th>名称</th>
        <th>最新公布净值</th>
        <th>累计净值</th>
        <th>前单位净值</th>
        <th>净值增长率</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>003256</td>
        <td>农银金穗3个月定期开发债券</td>
        <td>1.075</td>
        <td>1.079</td>
        <td>1.074</td>
        <td>+0.047%</td>
      </tr>
      <tr>
        <td>003256</td>
        <td>农银金穗3个月定期开发债券</td>
        <td>1.075</td>
        <td>1.079</td>
        <td>1.074</td>
        <td>+0.047%</td>
      </tr>
      <tr>
        <td>003256</td>
        <td>农银金穗3个月定期开发债券</td>
        <td>1.075</td>
        <td>1.079</td>
        <td>1.074</td>
        <td>+0.047%</td>
      </tr>
    </tbody>
  </table>
<script>
  //鼠标事件:onmouseover/onmouseout
  // 1.获取元素
  var trs = document.querySelector('tbody').querySelectorAll('tr')
  for (let i = 0; i < trs.length; i++) {
    trs[i].onmouseover = function() {
      this.className = 'bg'
    }
    trs[i].onmouseout = function () {
    	this.className = ''
    }
  }
</script>

案例:表单全选、取消全选

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
      * {
          padding: 0;
          margin: 0;
      }

      .wrap {
          width: 300px;
          margin: 100px auto 0;
      }

      table {
          border-collapse: collapse;
          border-spacing: 0;
          border: 1px solid #c0c0c0;
          width: 300px;
      }

      th,
      td {
          border: 1px solid #d0d0d0;
          color: #404060;
          padding: 10px;
      }

      th {
          background-color: #09c;
          font: bold 16px "微软雅黑";
          color: #fff;
      }

      td {
          font: 14px "微软雅黑";
      }

      tbody tr {
          background-color: #f0f0f0;
      }

      tbody tr:hover {
          cursor: pointer;
          background-color: #fafafa;
      }
  </style>


</head>

<body>
<div class="wrap">
  <table>
    <thead>
    <tr>
      <th>
        <input type="checkbox" id="j_cbAll"/>
      </th>
      <th>商品</th>
      <th>价钱</th>
    </tr>
    </thead>
    <tbody id="j_tb">
    <tr>
      <td>
        <input type="checkbox"/>
      </td>
      <td>iphone8</td>
      <td>8000</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox"/>
      </td>
      <td>ipad</td>
      <td>4000</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox"/>
      </td>
      <td>mac</td>
      <td>9000</td>
    </tr>
    </tbody>
  </table>
</div>
<script>
	//  1. 全选,下面按钮跟着全选按钮即可
	// 获取元素
	let j_cbAll = document.getElementById('j_cbAll')
	let j_tbs = document.getElementById('j_tb').getElementsByTagName('input')
	// 全选按钮
	j_cbAll.onclick = function () {
		for (let i = 0; i < j_tbs.length; i++) {
			j_tbs[i].checked = this.checked
		}
	}
	for (let i = 0; i < j_tbs.length; i++) {
		j_tbs[i].onclick = function () {
			let flag = true
			for (let j = 0; j < j_tbs.length; j++) {
				if (!j_tbs[j].checked) {
					flag = false
					break
				}
			}
			j_cbAll.checked = flag
		}
	}
</script>
</body>
</html>

案例:tab切换

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    *{
        margin: 0;
        padding: 0;
    }

    li {
      list-style-type: none;
    }
    .tab {
        width: 978px;
        margin: 100px auto;
    }

    .tab_list {
        height: 39px;
        border: 1px solid #ccc;
        background-color: #f1f1f1;
    }
    .tab_list li {
        float: left;
        height: 39px;
        line-height: 39px;
        padding: 0 20px;
        text-align: center;
        cursor: pointer;
    }
    .tab_list .current {
        background-color: #c81623;
        color: #fff;
    }
    .item {
        display: none;
    }

  </style>

</head>
<body>
  <div class="tab">
    <div class="tab_list">
      <ul>
        <li class="current">商品介绍</li>
        <li>规格与包装</li>
        <li>售后保障</li>
        <li>商品评价(50000)</li>
        <li>手机社区</li>
      </ul>
    </div>
    <div class="tab_con">
      <div class="item" style="display: block">
        商品介绍模块内容
      </div>
      <div class="item">
        规格与包装模块内容
      </div>
      <div class="item">
        售后保障模块内容
      </div>
      <div class="item">
        商品评价模块内容
      </div>
      <div class="item">
        手机社区模块内容
      </div>
    </div>
  </div>
  <script type="text/javascript">
    // 1. 2个模块
    // 2. 上面选项卡排它思想
    //1.获取元素
    var lis = document.querySelector('.tab_list').querySelectorAll('li')
    var items = document.querySelectorAll('.item')
    for (let i = 0; i < lis.length; i++) {
    	// 2. 下面模块
      // 2.1给lis所有的li添加自定义属性,属性值从0开始编号
      lis[i].setAttribute('index',i)

      lis[i].onclick = function () {
      	var index = this.getAttribute('index')
	      for (let j = 0; j < items.length; j++) {
		      items[j].style.display = 'none'
	      }
	      items[index].style.display = 'block'
	      for (let j = 0; j < lis.length; j++) {
          lis[j].className = ''
	      }
	      lis[i].className = 'current'
      }
    }
  </script>
</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值