ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS DOM HTML

2022-05-05 18:31:07  阅读:146  来源: 互联网

标签:DOM 元素 JS getElementById HTML 数组 document id


声明

该文部分代码和内容节选自菜鸟教程,仅用作个人学习,特此声明

链接https://www.runoob.com/

DOM HTML

1、查找 HTML 元素

通常,需要通过 JavaScript操作 HTML 元素。首先需要找到该元素。有三种方法查找HTML元素:

  • 通过 id 找到 HTML 元素(ById)

    • 本例查找 id="intro" 元素:

      var x = document.getElementById("id");
      

      如果找到该元素,则该方法将以对象(在 x 中)的形式返回该元素。

      如果未找到该元素,则 x 将包含 null

  • 通过标签名找到 HTML 元素(ByTagName)

    • 本例查找 id="main" 的元素,然后查找 id="main" 元素中的所有 < p > 元素:

      var x = document.getElementById("main");
      var y = x.getElementsByTagName("p");
      
  • 通过类名找到 HTML 元素(ByClassName)

    • 本例通过 getElementsByClassName 函数来查找 class="intro" 的元素:

      <p class="intro">hello world</p>
      var x=document.getElementsByClassName("intro");
      

了解更多关于 HTML DOM getElementsByClassName() 方法的内容,参考以下文章

HTML DOM getElementsByClassName() 方法 | 菜鸟教程 (runoob.com)


补充知识

getElementsByTagName 和 getElementsByClassName 这两个方法查找多个 dom 元素,返回的是 htmlcollection 类型,是伪数组而不是真数组,故不能使用数组的方法。

我们可以使用数组原型配合 slice 方法,利用 call,apply,bind 方法将伪数组转为真数组

var x=document.getElementById("main");
var y=x.getElementsByTagName("p");
console.log(y)//在控制台我们可以看到原型proto为htmlcollection,是伪数组
//伪数组转为真数组方法1
console.log(Array.prototype.slice.call(y))//在控制台我们可以看到原型proto为Array(0),是真数组

//伪数组转为真数组方法2
console.log(Array.prototype.slice.apply(y))//在控制台我们可以看到原型proto为Array(0),是真数组

//伪数组转为真数组方法3
console.log(Array.prototype.slice.bind(y)())//在控制台我们可以看到原型proto为Array(0),是真数组

2、改变 HTML 元素

HTML DOM 允许 JavaScript 改变 HTML 元素的内容。其中,改变HTML输出流使用document.write,改变HTML内容用document.getElementById("id").innerHTML;之前已经用过一万遍了,这里不多赘述

下面首先来介绍一下如何改变HTML属性

如果需要改变 HTML 属性,使用的语法如下:

document.getElementById("id").attribute = "新属性值"

我们举个简单的例子,改变 img 标签的 src 属性(改变图片路径达到替换图片的目的)

<img id="image" src="xxxxxx">
    
<script>
document.getElementById("image").src = "yyyyyy";
</script>

在上面的这个例子中,我们做了这些事情

  • 首先通过 img 标签的 id 获得这个元素
  • 更改此元素的 src 属性为 yyyyyy

标签:DOM,元素,JS,getElementById,HTML,数组,document,id
来源: https://www.cnblogs.com/xypersonal/p/16225867.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有