JavaScript DOM编程基础

简介: JavaScript DOM编程基础

一.什么是DOM?

 文档对象模型,是W3C组织推荐的处理课扩展标记语言的标准编程。

 1.2 DOM树

  当网页被加载时,浏览器会创建页面的文档对象模型,被结构化的称为对象树。

 

HTML DOM 是 HTML 的标准对象模型和编程接口。它定义了:

  • 作为对象的 HTML 元素
  • 所有 HTML 元素的属性
  • 访问所有 HTML 元素的方法
  • 所有 HTML 元素的事件

注意事项:DOM把以上内容都看做是对象  

二、查找 HTML DOM 元素[标签,属性,文本内容]

 

2.1 getElementByID()

使用getElementById()方法可以获取带有ID的元素对象

<div id="oDiv">zking zz is a nice man</div>

<script type="text/javascript">

   var oDiv = document.getElementById('oDiv');

   console.log(oDiv)

</script>


2.2 getElementsByTagName()

使用getElementsByTagName()方法可以返回带有指定标签名的对象集合。

document.getElementsByTagName('标签名')

还可以获取某个元素(父元素)内部所有指定标签名的子元素。

element.getElementsByTagName('标签名');

 

2.3 getElementsByName()

getElementsByName() 方法可返回带有指定名称的对象的集合。

getElementsByName() 方法可返回带有指定名称的对象的集合。

 

2.4 通过HTML5新增的方法获取

//根据类名返回元素对象集合

document.getElementsByClassName('类名');

//根据指定选择器返回第一个元素对象 切记 里面的选择器需要加符号

document.querySelector('选择器');

//根据指定选择器返回

document.querySelectorAll('选择器');

 

2.5 获取特殊元素(body、html)

获取body元素

document.body

获取html元素

document.documentElement;

 

三、改变 HTML 元素【内容】

JavaScript的DOM操作可以改变网页内容,结构和样式,我们可以利用DOM操作元素来改变元素里的内容,属性等操作。注意以下的是属性:

方法 描述
element.innerHTML = new html content 改变元素的 HTML 内容
element.innerTEXT = new text 改变元素的文本内容
element.attribute = new value 改变 HTML 元素的属性值
element.setAttribute(attribute, value) 改变 HTML 元素的属性值
element.hasAttribute(attribute) 判断元素是否有该属性
element.removeAttribute(attribute) 删除元素属性
element.style.property = new style 改变 HTML 元素的样式

 

3.1 element.innerHTML

元素属性 innerHTML 就是元素的 HTML 代码,当查找到元素后,可以对其 innerHTML 属性进行重新赋值修改。

<div>

   <h1>Hello World</h1>

</div>

<script>

   var h1 = document.querySelector("div");

   // 将原本的div里边的所有HTML内容更改,如果没有子元素,InnerHTML 就会修改该元素下的 Text 内容

   h1.innerHTML = "<h2>2020-05-05</h2>";

</script>

// 输出结果

2020-05-05

 

3.2 element.innerText

<h1>Hello World</h1>

<script>

   var h1 = document.querySelector("h1");

   // 只更改文本,HTML 不解析,同时去除空格和换行

   h1.innerText = "<h2>2020-05-05</h2>    ABC";

</script>

// 输出结果

<h2>2020-05-05 ABC</h2>

 

3.3 element.attribute 改变元素属性值

这里的 attribute 是代词,具体要看元素有什么属性,比如 a 链接就有 href 属性,所以使用的时候需要用 element.href 来改变。

<div>

   <a href="https://www.163.com">网址</a>

</div>

<script>

   var a = document.querySelector("a");

   a.href = "https://www.qq.com";

</script>

 

3.4 element.setAttribute 改变元素属性值

还可以通过 element.setAttribute 方法来改变元素属性值

element.setAttribute(attribute, value)

  • attribute:属性名
  • value:属性值

 

<div>

   <a class="hightlight" href="https://www.163.com">网址</a>

</div>

<script>

   var a = document.querySelector("a");

   a.setAttribute("href", "https://www.qq.com");

   // 用 .属性方法更改 class 属性使用 className

   // 注意空格,这里是增加一个class

   a.className += " hidden";  

   // 用 setAttribute 更改 class 属性直接用 class

   // 也可以直接写上两个属性

   a.setAttribute("class", "hightlight hidden");

</script>

 

常用元素属性

  • innerText
  • innerHTML
  • src
  • href
  • id, alt, title

3.5 element.hasAttribute

通过 element.hasAttribute 判断元素是否有指定属性

<a href="index.php" data-index="1">123</a>

<script>

var d = document.querySelector("a");

// 返回 true

console.log(d.hasAttribute("href"));

</script>

 

3.6 element.removeAttribute

<a href="index.php" data-index="1">123</a>

<script>

var d = document.querySelector("a");

d.removeAttribute("data-index");

</script>

 

3.7 style.property 修改样式

使用元素中的 style 属性可以修改该元素的样式。如 a.style.fontSizea.style.display。修改的样式直接作用在行内CSS样式中,

  • 修改样式的属性名需要改写,将横杠从CSS属性名中去除,然后将横杠后第一个字母大写,如:background-color 写成 backgroundColor
  • 属性值都是字符串,设置时必须包括单位

<div>

   <a href="https://www.163.com">网址</a>

</div>

<script>

   var a = document.querySelector("a");

   a.style.fontSize = "24px";

</script>

控制元素隐藏与显示

// visibility属性    visible    表示元素是可见的    hidden    表示元素是不可见的

// object.style.visibility="值"

// display属性            none    表示此元素不会被显示    block    表示此元素将显示为块级元素,此元素前后会带有换行符

// object.style.display="值"

通过类名切换背景

也可以通过

document.body.style.backgroundColor属性切换背景颜色

<style>

   .cls {

       background-color: coral;

   }

</style>

<body>

   <button>切换</button>

   <script>

       var btn = document.querySelector("button");

       btn.addEventListener("click", function () {

           if (document.body.className == "") {

               document.body.className = "cls";

           } else {

               document.body.className = "";

           }

       });

   </script>

</body>

图片切换案例

<!DOCTYPE html>
<html>
   <head>
       <meta charset="utf-8">
       <title>图片切换</title>
       <script type="text/javascript">
           //数组的方式定义  保存所有的图片的名称
           var images = [
               "img/1.jpg",
               "img/2.jpg",
               "img/3.jpg",
               "img/4.jpg",
               "img/5.jpg"];
       
           var index = 0;
           
           //声明一个变量保存定时器
           var timer = null;
       
           
       
       
       
           //加载函数
           window.onload = function(){
               
               //获取图片标签   调用src重新赋值
               var oImg = document.querySelector("img");
               
               
               
               
               //封装一个函数 保存下一张的代码
               function next(){
                   index++;
                   if(index >= images.length){
                       index = 0;//归0
                   }
                   oImg.src = images[index];//0 1 2 3 4
                   console.log(index);
               }
               
               
               
               
               //手动点击下一张  进行切换
               var nextBtn = document.getElementById("nextBtn");
               //设置点击事件
               nextBtn.onclick = function(){
                   next();
               };
               
               //手动点击上一张  进行切换
               var backBtn = document.getElementById("backBtn");
               //设置点击事件
               backBtn.onclick = function(){
                   index--;
                   if(index < 0){
                       index = images.length-1;//归0
                   }
                   oImg.src = images[index];//0 1 2 3 4
                   console.log(index);
               };
               
               
               //自动切换的按钮
               var autoBtn = document.getElementById("autoBtn");
               autoBtn.onclick = function(){
                   window.clearInterval(timer);
                   //设置定时器
                   timer = window.setInterval(function(){
                       next();
                   },2000);
               };
               
               var closeBtn = document.getElementById("closeBtn");
               closeBtn.onclick = function(){
                   window.clearInterval(timer);
               }
           };
           
           
       </script>
   </head>
   <body>
       <!-- 调用src属性   对象.属性 -->
       <img src="img/1.jpg" alt="" width="300" height="300">
       <hr>
       <button id = "backBtn">上一张</button>
       <button id="nextBtn">下一张</button>
       <button id="autoBtn">自动切换图片</button>
       <button id="closeBtn">关闭切换图片</button>
       
   </body>
</html>

 


目录
相关文章
|
2月前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
3月前
|
存储 JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果+1
JavaScript编程实现tab选项卡切换的效果+1
|
1月前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
19天前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
28 5
|
21天前
|
前端开发 JavaScript 持续交付
提高JavaScript编程效率
提高JavaScript编程效率
24 3
|
1月前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
1月前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包:解锁编程潜能,释放你的创造力
【10月更文挑战第25天】本文深入探讨了JavaScript中的闭包,包括其基本概念、创建方法和实践应用。闭包允许函数访问其定义时的作用域链,常用于数据封装、函数柯里化和模块化编程。文章还提供了闭包的最佳实践,帮助读者更好地理解和使用这一强大特性。
19 2
|
2月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
72 4
|
3月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 节点列表
JavaScript HTML DOM 节点列表
21 5
|
3月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 集合(Collection)
JavaScript HTML DOM 集合(Collection)
36 4