获取元素的方式

获取元素尺寸

offsetWidth和offsetHeight
  • offsetWidth: 获取元素的宽度,包括元素的内容宽度、内边距和边框宽度。

  • offsetHeight: 获取元素的高度,包括元素的内容高度、内边距和边框高度。

var element = document.getElementById('myElement');
var width = element.offsetWidth;
var height = element.offsetHeight;
console.log('Width: ' + width + 'px');
console.log('Height: ' + height + 'px');
clientWidth和clientHeight
  • clientWidth: 获取元素的可见区域的宽度,包括元素的内容宽度和内边距,但不包括滚动条和边框。

  • clientHeight: 获取元素的可见区域的高度,包括元素的内容高度和内边距,但不包括滚动条和边框。

var element = document.getElementById('myElement');
var width = element.clientWidth;
var height = element.clientHeight;
console.log('Client Width: ' + width + 'px');
console.log('Client Height: ' + height + 'px');

获取元素偏移量

offsetLeft和offsetTop
  • offsetLeft: 获取元素相对于其最近的具有定位的父元素的左边界的偏移量。

  • offsetTop: 获取元素相对于其最近的具有定位的父元素的上边界的偏移量。

var element = document.getElementById('myElement');
var leftOffset = element.offsetLeft;
var topOffset = element.offsetTop;
console.log('Offset Left: ' + leftOffset + 'px');
console.log('Offset Top: ' + topOffset + 'px');
clientLeft和clientTop
  • clientLeft: 获取元素的左边框的宽度。

  • clientTop: 获取元素的上边框的高度。

var element = document.getElementById('myElement');
var leftBorderWidth = element.clientLeft;
var topBorderHeight = element.clientTop;
console.log('Left Border Width: ' + leftBorderWidth + 'px');
console.log('Top Border Height: ' + topBorderHeight + 'px');

操作 DOM 节点

  • 我们所说的操作无非就是 增删改查(CRUD)

  • 创建一个节点(因为向页面中增加之前,我们需要先创建一个节点出来)

  • 向页面中增加一个节点

  • 删除页面中的某一个节点

  • 修改页面中的某一个节点

  • 获取页面中的某一个节点

创建一个节点

  • createElement:用于创建一个元素节点

    // 创建一个 div 元素节点
    var oDiv = document.createElement('div')
    ​
    console.log(oDiv) // <div></div>
    • 创建出来的就是一个可以使用的 div 元素

  • createTextNode:用于创建一个文本节点

    // 创建一个文本节点
    var oText = document.createTextNode('我是一个文本')
    ​
    console.log(oText) // "我是一个文本"

向页面中加入一个节点

  • appendChild:是向一个元素节点的末尾追加一个节点

  • 语法: 父节点.appendChild(要插入的子节点)

    // 创建一个 div 元素节点
    var oDiv = document.createElement('div')
    var oText = document.createTextNode('我是一个文本')
    ​
    // 向 div 中追加一个文本节点
    oDiv.appendChild(oText)
    ​
    console.log(oDiv) // <div>我是一个文本</div>

  • insertBefore:向某一个节点前插入一个节点

  • 语法: 父节点.insertBefore(要插入的节点,插入在哪一个节点的前面)

    <body>
      <div>
        <p>我是一个 p 标签</p>
      </div>
      
      <script>
        var oDiv = document.querySelector('div')
        var oP = oDiv.querySelector('p')
        
        // 创建一个元素节点
        var oSpan = document.createElement('span')
        
        // 将这个元素节点添加到 div 下的 p 的前面
        oDiv.insertBefore(oSpan, oP)
        
        console.log(oDiv)
        /*
            <div>
                <span></span>
                <p>我是一个 p 标签</p>
            </div>
        */
      </script>
    </body>

删除页面中的某一个节点

  • removeChild:移除某一节点下的某一个节点

  • 语法:父节点.removeChild(要移除的字节点)

    <body>
      <div>
        <p>我是一个 p 标签</p>
      </div>
      
      <script>
      	var oDiv = document.querySelector('div')
        var oP = oDiv.querySelector('p')
        
        // 移除 div 下面的 p 标签
        oDiv.removeChild(oP)
        
        console.log(oDiv) // <div></div>
      </script>
    </body>

修改页面中的某一个节点

  • replaceChild:将页面中的某一个节点替换掉

  • 语法: 父节点.replaceChild(新节点,旧节点)

    <body>
      <div>
        <p>我是一个 p 标签</p>
      </div>
      
      <script>
      	var oDiv = document.querySelector('div')
        var oP = oDiv.querySelector('p')
        
        // 创建一个 span 节点
        var oSpan = document.createElement('span')
        // 向 span 元素中加点文字
        oSpan.innerHTML = '我是新创建的 span 标签'
        
       	// 用创建的 span 标签替换原先 div 下的 p 标签
        oDiv.replaceChild(oSpan, oP)
        
        console.log(oDiv)
        /*
        	<div>
        		<span>我是新创建的 span 标签</span>
        	</div>
        */
      </script>
    </body>

克隆某一个节点

  • cloneNode:将页面中的某一个节点克隆一份

  • 语法: 节点.cloneNode(boolean)

boolean为true的时候会拷贝后代所有的节点,false或者不传只克隆当前自身节点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值