javaScript(十九)Element

1. DOM 元素树

还记得下面这张图吗?

DOM 访问或操作 HTML 页面内容主要是依靠 DOM 节点树这个模型。DOM 有三个主要对象,除了 Document 和 Node 之外,还有一个就是 Element 对象。Element 对象描述了所有相同种类的元素所普遍具有的方法和属性,也是访问和操作 HTML 页面内容的主要途径之一。Element 对象和 Node 对象类似,同样提供了一个 DOM 元素树这个模型。如下图所示:

2. 遍历元素

2.1 获取父元素

通过 HTML 页面的指定标签查找其父元素,我们可以通过如下属性实现:

element.parentElement
var childDiv1=document.getElementById("childDiv1");
        var parentDiv=childDiv1.parentElement;
        parentDiv.style.backgroundColor="red";

2.2 获取子元素

通过 HTML 页面的指定标签查找其子元素,我们可以通过如下属性实现:

  • firstElementChild: 获取指定标签的第一个子元素。
  • 友情提示:IE8及以下版本不支持此方法;
var parentDiv=document.getElementById("parentDiv");
       var firstElementChild= parentDiv.firstElementChild;
       console.log(firstElementChild);
       firstElementChild.style.backgroundColor="orange";

 

  • lastElementChild: 获取指定标签的最后一个子元素。
  • 友情提示:IE8及以下版本不支持此方法;
var parentDiv=document.getElementById("parentDiv");
var lastElementChild=parentDiv.lastElementChild;
lastElementChild.style.backgroundColor="orange";

 

  • children: 获取指定标签的所有子元素。
  var parentDiv=document.getElementById("parentDiv");
         var children= parentDiv.children;
         for (var i=0;i<children.length;i++){
             children[i].style.backgroundColor="red";
         }

2.3 获取兄弟元素

通过 HTML 页面的指定标签查找兄弟元素,我们可以通过如下属性实现:

  • previousElementSibling: 获取指定节点的前一个兄弟节点。//IE8及以下版本不支持
  var two=document.getElementById("two");
  var preEle=two.previousElementSibling;
  preEle.style.backgroundColor="red";

 

  • nextElementSibling: 获取指定节点的后一个兄弟节点。//IE8及以下版本不支持
var two=document.getElementById("two");
var nextEle=two.nextElementSibling;
nextEle.style.backgroundColor="red";

 

3. 操作属性

Element 对象提供的属性操作的方法,是实际开发中应用最多的。(因为 Element 对象操作属性要比 Node 对象简便。)

3.1 获取属性

获取 HTML 页面标签的指定属性值,我们可以通过以下方法实现:

element.getAttribute(属性名);
 var one=document.getElementById("one");
 var clas=one.getAttribute("class");
alert(clas);

3.2 设置属性

设置 HTML 页面标签的指定属性,我们可以通过以下方法实现:

element.setAttribute(属性名, 属性值)//会覆盖之前的属性值
var one=document.getElementById("one");
one.setAttribute("title","我是标题");

3.3 删除属性

删除 HTML 页面标签的指定属性,我们可以通过以下方法实现:

element.removeAttribute(属性名);
var one=document.getElementById("one");
one.removeAttribute("title");

3.4 判断是否含有属性

判断 HTML 页面标签的是否含有属性,我们可以通过以下方法实现:

element.hasAttribute(属性名);//判断指定标签是否含有指定属性

 hasAttributes()方法
         * Node对象的方法
         * 作用 - 判断指定标签是否包含属性

var one=document.getElementById("one");
var result=one.hasAttribute("title");//true

4. 获取或更新文本

通过学习 DOM 查询我们知道,获取或更新文本就是对文本节点的操作。

文本节点的 nodeValue 属性可以得到文本内容,也可以设置文本内容。

textNode.nodeValue
 <ul class="list-group">
					<li id="one" class="list-group-item">这是一个 id 为 one 的选项</li>
</ul>

<script type="text/javascript">
       var btn=document.getElementById("btn");
       btn.onclick=function () {
           var one=document.getElementById("one");
           var textNode=one.firstChild.nodeValue;
           alert(textNode);
	   }
</script>

4.2 通过 元素的innerText 或 textContent 属性获取或更新文本

innerText 或 textContent 属性都可以用于获取或更新文本。我们先来掌握如何使用这两个属性,再来讨论它们之间的区别。我们可以通过如下示例来学习如何通过 innerText 属性获取或更新文本:

<script type="text/javascript">
        var btn=document.getElementById("btn");
        btn.onclick=function () {
            var one=document.getElementById("one");
            var innerText= one.innerText;
            alert(innerText);
        }
    </script>

学习如何通过 textContent 属性获取或更新文本:

  <script type="text/javascript">
        var btn=document.getElementById("btn");
        btn.onclick=function () {
            var one=document.getElementById("one");
            var text= one.textContent;
            alert(text);
        }
    </script>

innerText 与 textContent 属性的区别

那 innerText 或 textContent 属性之间有什么区别呢?我们还是先通过一个示例入手:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>文本操作</title>
    <link rel="stylesheet" href="css/style.css" />
    <style type="text/css">
        b {
            display: none;
        }
    </style>
</head>
<body>
<button id="btn1">点点1</button>
<ul class="list-group">
    <li id="one" class="list-group-item">这是一个id为one的选项</li>
    <li id="two" name="list" class="list-group-item">这是一个id为<b>two</b>的选项</li>
</ul>
</body>
<script>
    var btn1=document.getElementById("btn1");
    btn1.onclick=function () {
        var one=document.getElementById("one");
        var text1=one.innerText;
        console.log(text1);//这是一个id为one的选项
        var text2=one.textContent;
        console.log(text2);//这是一个id为one的选项

        var two=document.getElementById("two");
        var text1=two.innerText;
        console.log(text1);//这是一个id为的选项
        var text2=two.textContent;
        console.log(text2);//这是一个id为two的选项

    }


</script>
</html>
属性名获取文本的结果浏览器支持情况
innerText不能获取被 CSS 样式隐藏的文本内容Firefox 不支持
textContent可以获取全部文本内容(包含所有后代节点的文本内容)IE 8及之前版本不支持

获取或更新 HTML

我们可以通过 innerHTML 属性来获取或更新 HTML 页面的指定标签所包含的 HTML 代码内容。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>innerHTML属性</title>
		<link rel="stylesheet" href="css/style.css" />
		<style type="text/css">
			body {
				padding: 100px;
			}
		</style>
	</head>
	<body>
		<div class="container">
			<div class="col-md-4">
				<p><button id="btn" class="btn btn-primary btn-block">innerHTML属性</button></p>
			</div>
			<div class="col-md-8">
				<ul id="ull" class="list-group">
					<li id="one" class="list-group-item">这是一个 id 为 one 的选项!</li>
				</ul>
			</div>
		</div>

	</body>
    <script type="text/javascript">
        var btn=document.getElementById("btn");
        btn.onclick=function () {
            var ull=document.getElementById("ull");
            var ullHTML=ull.innerHTML;
            console.log(ullHTML);// <li id="one" class="list-group-item">这是一个 id 为 one 的选项!</li>

            // 更新HTML
            ull.innerHTML='<li id="11" class="list-group-item">我是新的</li>';
            console.log(ull.innerHTML);// <li id="11" class="list-group-item">我是新的</li>
        }
    </script>
</html>

  innerHTML属性
      作用 - 获取或设置指定标签的HTML代码
      注意 - 使用 innerHTML 属性的安全性很低(可能接收一些恶意代码)
      解决 - 使用 innerHTML 属性时,对应的值不能是用户输入内容

 

 

 

 

 

 

今天风和日丽

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值