首页 > 编程语言 >46.JavaScript基础【四】

46.JavaScript基础【四】

时间:2024-06-17 20:55:02浏览次数:27  
标签:JavaScript 46 元素 基础 获取 事件 document 节点 类名

【一】弹出框

  • 是网页开发中常用的交互组件,用于显示警告、确认或提示,并于用户进行交互

1)警告框

  • 用于向用户显示一条重要的警告信息

  • 通常包含一个确认按钮用于关闭

    alert("警告提示框")
    

2)确认框

  • 用于向用户询问一个问题或确认某个操作

  • 通常包含一个确认按钮和一个取消按钮

    if(confirm("确认提示框")){
        console.log("已确认")
    }else{
        console.log("已取消")
    }
    

3)提示框

  • 用于向用户展示一条信息,并等待用户输入数据

  • 通常包含一个输入框和确认、取消按钮

    prompt("请输入信息","默认值")
    

【二】计时器相关

  • 既可以放在 body 内,也可放在 head 内
  • 毫秒为单位

1)过一段时间触发

  • 在经过一定的时间后触发某个操作

    setTimeout(函数体,延迟时间)
    
    setTimeout(
        ()=>{console.log("延迟结束")},
        2000
    )
    

2)每隔一段时间触发一次

  • 每隔一定的时间重复触发某个操作

    setInterval(函数体,延迟时间)
    
    setInterval(
        ()=>{console.log("延迟结束")},
        2000
    )
    

3)清除定时器

1.clearTimeout

  • 用于清除setTimeout函数设置的定时器

  • 括号内填写指定的定时器定义的名称

    clearTimeout();
    

2.clearInterval

  • 用于取消setInterval函数设置的定时器

  • 括号内填写指定的定时器定义的名称

    clearInterval();
    

3.注意

  • 在调用clearTimeout或clearInterval函数时

    • 需要将原先保存的计时器标识符作为参数传递给这两个函数,以确保取消正确的定时器。
  • 确保清除定时器

    • 若不在需要定时器,应及时清除,避免资源浪费
  • 考虑浏览器兼容性

    • 在使用定时器时,应注意不同浏览器对定时器的支持会存在差异,可使用各种前端框架或库提供的方法方法处理兼容性问题
  • 注意定时器的性能影响

    • 频繁使用定时器会对页面性能产生一定的影响

【三】查找标签

1)直接查找标签(getElement)

1.getElementByld

  • 根据元素的ID属性之间获取对应的HTML元素

  • 拿到对象本身

    document.getElementByld("ID值")
    

2.getElementsByTagName

  • 根据标签名获取匹配的所有元素

  • 拿到数组(容器)

    document.getElementsByTagName("标签名")
    

3.getElementsByClassName

  • 根据类名获取匹配的所有元素

  • 拿到数组(容器)

    document.getElementsByClassName("类名")
    

2)半间接查找标签

1.querySelector

  • 返回第一个匹配的元素

    document.querySelector("#ID值")
    

2.querySelectorAll

  • 返回所有匹配的元素列表

    document.querySelectorAll(".类名")
    

3.小结

  • 选择器可以是标签名、ID、类名、属性等,更复杂的选择器可以选择嵌套结构

3)间接查找标签

1.parentElement

  • 返回指定元素的父元素
  • 可在DOM层次结构中向上导航

2.children

  • 返回指定元素下的所有子元素组成的集合
  • 此集合中不包含文本节点和其他元素节点

3.firstChild

  • 返回当前标签下的文字

4.firstElementChild

  • 返回指定元素下的第一个子元素
  • 它只返回第一个子元素,忽略在它之前存在的任何非元素节点

5.lastElementChild

  • 返回指定元素下的最后一个子元素
  • 它仅包括最后一个元素作为其子节点,忽略在它之后的任何非元素节点

6.nextElementSibling

  • 返回同级元素的下一个兄弟元素
  • 允许在DOM中导航并访问特定元素的下一个兄弟元素

7.previousElementSibling

  • 返回同级元素的上一个兄弟元素
  • 许在DOM中导航并访问特定元素的上一个兄弟元素

【四】节点属性

  • 是在文档对象模型中对节点进行创建、获取、修改、删除等操作

1)创建节点

// 创建一个指定标签
document.createElement("span")
// 创建一个指定内容的节点
document.createTextNode('内容')
// 创建一个空的片段批量插入多个节点
document.createDocumentFragment()

2)获取节点

// 根据元素的id属性获取对应的元素节点
getElementById("id值"): 
// 根据元素的标签名获取一组元素节点
getElementsByTagName("标签名"): 
// 根据元素的类名获取一组元素节点
getElementsByClassName("类名"): 
// 使用CSS选择器获取匹配的第一个元素节点
querySelector(selector): 
// 使用CSS选择器获取匹配的所有元素节点
querySelectorAll(selector): 

3)修改节点

  • node:根据元素获取的一组节点
// 将一个节点作为父节点的最后一个子节点添加到指定节点
node.appendChild(childNode)
// 从父节点中删除指定字节点
node.removeChild(childNode)
// 使用新节点替换旧节点
node.replace(newNode,oldNode)
// 在参考节点之前插入新节点
node.insertBefore(newNode, childNode)

4)属性操作

// 获取指定属性值
element.getAttribute(attribute)
// 设置指定属性的值
element.setAttribute(attribute, value)
//移除指定属性
element.removeAttribute(attribute):

5)文本操作

// 获取或设置节点的文本内容,文本带有标签内部的所有标签
node.textContent
// 获取或设置节点的HTML内容,只有文本没有标签
node.innerHTML

【五】获取值操作

1)获取属性值

  • 可以使用getAttribute()方法来获取HTML元素的属性值

  • 须传入属性名作为参数,并返回对应的值

    // 获取id为myElement的元素的src属性值
    var element=document.getElementById('myElement');
    var srcvalue=element.getAttribute("src");
    console.log(srcvalue);
    

2)获取文本内容

  • 可以使用innerText、innerHTML或textContent属性来获取一个元素的文本内容

  • 这些属性会返回元素内包含的文本,但存在一些差异

    • innerText:返回元素的纯文本内容,不包括HTML标记
    • innerHTML:返回元素的HTML内容,包括HTML标记
    • textContent:返回元素及其所有子元素的文本内容,包括隐藏元素和注释等
    // 获取id为myElement的div元素的文本内容
    var element = document.getElementById("myElement");
    var textContent = element.textContent;
    console.log(textContent);
    

3)获取用户输入值

  • 对于表单元素(如input、select、textarea等)

  • 可以通过获取其value属性来获取用户输入的值

    // 获取id为myInput的input元素的值
    var input = document.getElementById("myInput");
    var inputValue = input.value;
    console.log(inputValue);
    

4)获取文件

<body>
file <input type="file" name="upload" id="file_input">
</body>
let inputFileEle = document.getElementById("file_input")
inputFileEle.addEventListener("change", function () {
    // 先获取到上传的文件
    var fileData = inputFileEle.files;
    // 遍历文件列表,并处理每个文件
    for (var i = 0; i < fileData.length; i++) {
        var file = fileData[i];
        console.log("文件名:" + file.name);
        console.log("文件类型:" + file.type);
        console.log("文件大小(字节):" + file.size);
        console.log("最后修改时间:" + file.lastModified);
    }
})

【六】属性操作

1)class属性

1.介绍

  • .classList() 是JavaScript中用于获取HTML元素的类名列表的方法
  • 它返回一个DOMTokenList对象,该对象包含了元素的所有类名

2.示例

var element = document.getElementById("myElement");
var classList = element.classList;

// 检查是否包含某个类名
if (classList.contains("myClass")) {
  console.log("myElement包含myClass类名");
}

// 添加类名
classList.add("newClass");

// 移除类名
classList.remove("oldClass");

// 切换类名(如果存在则移除,否则添加)
classList.toggle("active");

3.注意

  • classList是只读的,不能直接赋值
  • classList是一个动态的列表,会实时反映元素的当前类名状态
  • 可通过遍历classList来访问每个类名,或使用length属性获取类的名称

【七】事件

  • 在计算机编程中
    • 事件(Event)是指在程序执行期间发生的特定操作或状态变化
    • 事件可以来自用户的交互操作(如点击、鼠标移动等),也可以是其他元素或系统发出的通知(如定时器到期、网络请求完成等)
    • 事件触发后,程序可以执行相应的处理函数来响应事件并做出相应的操作

1.鼠标事件

  • click:鼠标点击事件
  • mouseover:鼠标悬停在元素上的事件
  • mouseout:鼠标离开元素事件
  • mousedown:鼠标按下事件
  • mouseup:识别松开事件
  • mousemove:鼠标移动事件

2.键盘事件

  • keydown:键盘按下事件
  • keyup:键盘松开事件
  • keypress:键盘按键按下后松开事件

3.表单事件

  • submit:表单提交事件
  • change:表单值改变事件
  • focus:表单元素获取焦点事件
  • blur:表单事件失去焦点事件

4.文档加载事件

  • load:页面完全加载完成是事件
  • unload:页面关闭或离开事件

5.定时器事件

  • setTimeout:在指定的延迟时间后触发事件
  • set interval:每隔一段时间触发一次事件

【八】绑定事件的方法

1)传统的事件属性绑定

  • 通过在HTML标签中直接添加事件属性

  • 这种方式简单直观,适用于简单的事件绑定需求,但对于复杂的交互场景,建议使用下面介绍的现代事件监听绑定方式

    <button onclick="myFunction()">点击我</button>
    
    <script>
      function myFunction() {
        alert("按钮被点击了!");
      }
    </script>
    

2)现代的事件监听绑定

  • 通过JavaScript代码动态地选择元素,并以编程方式绑定事件监听器

  • HTML和JavaScript代码会分离,提高了代码的可读性和可维护性

  • 使用现代的事件监听绑定方式,可以更灵活地添加、移除或修改事件监听器,同时也可以实现多个事件监听器同时响应一个事件的目的

    <button id="myButton">点击我</button>
    
    <script>
      var button = document.getElementById("myButton");
      button.addEventListener("click", function() {
        alert("按钮被点击了!");
      });
    </script>
    

标签:JavaScript,46,元素,基础,获取,事件,document,节点,类名
From: https://www.cnblogs.com/Mist-/p/18253174

相关文章

  • 48.Bootstrap基础
    【一】引入该框架已经帮我们写好了很多页面样式,如果需要使用,只需要下载对应文件直接CV拷贝即可在使用Bootstrap的时候,所有的页面样式只需要通过修改class属性来调节即可【二】什么是BootstrapBootstrap是一个开源的前端框架,用于快速构建响应式和移动设备优先的网站或应用......
  • 代码随想录算法训练营第38天|● 理论基础 ● 509. 斐波那契数● 70. 爬楼梯 ● 746.
    动态规划理论基础动态规划,英文:DynamicProgramming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的,动态规划做题步骤确定dp数组(dptable)以及......
  • 系统地学习Lua编程语言,掌握其基础知识并应用于实际项目中;Lua编程语言中级开发的大纲,涵
    学习Lua编程语言的初级开发大纲可以帮助你系统性地掌握这门语言的基础知识。下面是一个详细的大纲,从基础语法到基本的编程概念,再到一些实用的库和工具。Lua初级开发大纲1.Lua简介Lua的历史与特点Lua的应用场景安装与配置Lua环境2.基础语法注释:单行注释和多行注释......
  • 跟我从零开始学C++(C++代码基础)
    引言小伙伴们是不是都等不及了,来啦来啦它来啦,在经历过前边那么多乱七八糟的但又重要的知识后,终于迎来了有关C++代码的这一步,真是不容易呀,小伙伴们,本章小雨会带着大家去从下载软件到一些简单的基础知识,放轻松~不过本章全程干货一点都不能错过呀,而且附带的Visualstudio的详......
  • 跟我从零开始学C++(C++代码基础)3
    引言小伙伴们大家好呀,又到了每日学习的时候了,今天小杨同学给大家带来了新的知识点哟,大家准备好了么,昨天学习的任务有没有消化好呢,昨天的课后练习怎么样了呢,有没有费了一番功夫弄出来呢。没有把基础打好的小伙伴们千万不要着急呀,毕竟根基不牢是要出大事情的,小伙伴们加油呀,跟......
  • HTML和CSS基础(二)
    四、HTML布局4.1文档流HTML文档流(DocumentFlow)是网页布局的基础,它决定了元素如何在页面上排列。文档流可以分为两大类:正常流(NormalFlow)和脱离正常流(OutOfFlow)。下面详细介绍这两大类以及它们的子分类:1.正常流(NormalFlow)正常流是文档流的默认布局方式,元素按照它们在H......
  • 【cv-python基础】不同数据集的解析
    前言数据集使用之前需要对标注文件进行解析,故此记录。代码实现1.APA数据集解析#20240612:parsejsonfiletolabeledimage.importargparseimportjsonimportosimportos.pathasospimportcv2ascvimportnumpyasnpjsonfilename="freespace_3Dbox_APA.j......
  • 【CV基础】理解woodscape数据集
    前言最近需要用到鱼眼图像做语义分割、目标检测等任务,最开始先使用woodscape数据集进行训练、测试,故此记录学习woodscape数据集。学习woodscape数据集1.随机划分数据集shell脚本#!/bin/sh#20240617:splitwoodscapedatasetof10classesrandomlybasedoncityscape......
  • 【AI开发】RAG基础
    RAG的基本流程:用一个loader把knowledgebase里的知识做成一个个的document,然后把document切分成snippets,把snippets通过embedding(比如openai的embedding模型或者huggingface的)向量化,存储到vectordb向量数据库,以供后续相关性检索。至此便完成了私域数据集的索引indexing。......
  • 现在做一个圈子系统的优势,圈子系统基础玩法
    优势圈子是一个万能的信息聚合模型,可以复制扩展成各种商圈、黄页、部落、学校、家族等等,也有附近的圈子功能。这几年最火的是什么.就是微信群.但是现在群信群暴露出来的诸多的问题第一,里边信息混乱,虽然当时可以很方便的讨论一个话题,但是过后,别人不方便再继续讨论这个......