元素和节点

获取对象属性
一.点语法

结构:元素.属性
举例:box.id 获取元素的id
赋值:box.style.backgroundColor = “red”;
注意点:
1.只能获取行内属性,不能获取行外属性
2.获取到的是带单位的字符串
3.属性可以获取,也可以修改
4.获取类名使用className,不能使用class,因为class是关键字
特点:
1.可以获取行内标准属性
2.可以获取点语法动态添加属性
3.无法获取行内总定义属性
4.无法获取行外属性

二.attribute属性

获取元素属性:元素.getAttribute(“属性名”)
设置元素属性:元素.setAttribute(“属性名”,“属性值”)
移出元素属性:元素.removeAttribute(“属性名”)
特点:
1.可以获取行内标准属性
2.可以获取行内自定义属性
3.无法获取行外元素
4.无法获取点语法动态添加属性

获取元素和节点
1.获取兄弟节点和元素

获取节点

// 上一个节点
console.log(li2.previousSibling);  // 文本节点
// 下一个节点
console.log(li2.nextSibling);  // 文本节点

获取元素

//上一个元素
console.log(li2.previousElementSibling);
// 下一个元素
console.log(li2.nextElementSibling);

注意:IE8不支持获取兄弟元素的操作, 执行得到的undefined, 而且 在IE8里面没有任何替代方案
IE8要获取兄弟元素 只能通过节点获取
兼容性封装

function getPreviousElement(ele) {
            // 能力检测
            if(ele.previousElementSibling)  {  // 谷歌火狐
                return ele.previousElementSibling;
            } else {  // IE8
                // 获取上一个节点  :  null  元素  文本  注释
                var node = ele.previousSibling;
              
              // 循环次数不确定
              // 1. node必须存在, 不是null,  2. node不是元素节点
              while(node != null && node.nodeType != 1) {
                 node =  node.previousSibling
              }
              // node == null  或者  node.nodeType == 1
              return node;
            }
        }
2.获取第一个子元素和子节点
获取第一个子元素和子节点
获取第一个子节点   : 父元素.firstChild
获取第一个子元素  :  父元素.firstElementChild

兼容性封装

function firstElement(ele){
			if(ele.firstElementChild){//谷歌和火狐
				return ele.firstElementChild;
			}
			else{//IE8以下
				var node = ele.firstChild;
				// 循环次数不确定
				// 1. node必须存在, 不是null,  2. node不是元素节点
				while(node != null && node.nodeType != 1){
					node =  node.nextSibling;
				}
				// node == null  或者  node.nodeType == 1
				return node;
			}
		}
3.获取最后一个子元素和子节点
获取最后一个子元素和子节点
获取最后一个子节点   : 父元素.lastChild
获取最后一个子元素  :  父元素.lastElementChild
4.获取父节点

获取父节点 : 子元素.parentNode

5.克隆节点

元素.cloneNode(参数)
参数 : 布尔类型 true false(默认)
注意:1. 克隆节点只会在内存中克隆一份, 不会添加到页面上 只能手动添加
2. 克隆会把id也克隆过去
3. 为了保持页面id的唯一性, 需要修改克隆元素的id

页面添加元素
1.document.write(不常用,原因是会覆盖原本的页面内容)
document.write("<h1>我是标题</h1>")

覆盖原理:默认情况下,页面加载会形成一个文档流,当页面内容所有内容加载完毕之后这个文档流(默认的文档流)就关闭了
点某个事件,调用document.write向页面添加内容的时候,就会形成一个新的文档流,就会覆盖原本的文档流,默认的情况,默认文档里没有关闭

2.innerHTML(也不常用,性能问题,在100以内差别不大)
document.body.innerHTML += "<h1>我是标题</h1>"
3.官方推荐:document.createElement(“标签名”)

特点:1.默认创建的空标签
2.创建值存在于内存中,需要手动添加到页面上

//1.创建一个空标签
var h2 = document.createElement("h2");
//2.设置标签属性
h2.innerText = "我是h2标签";
//3.添加到页面上
document.body.appendChild(h2)
4.innerHTML和document.createElement(性能对比)
	//使用innerHTML向页面添加100个标签(15ms)创建10000个:1.2s
	console.time();
	for(var i = 0;i < 1000;i++){
	//直接赋值会覆盖前面的内容,要使用+=
	documoent.body.innerHTML += "<p>我是第"+(i+1)+"个p标签</p>"
	}
	console.timeEnd()
	//使用document.createElement向页面添加100个标签(0.6ms)创建10000个:3ms
	console.time();
	for(var i = 0;i < 1000;i++){
	var p = document.createElement("p");
	p.innerText = "我是第"+(i+1)+"个p标签"
	documoent.body.appendChild(p)
	}
	console.timeEnd()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值