首页 > 其他分享 >JS操作元素

JS操作元素

时间:2024-11-08 18:16:39浏览次数:3  
标签:元素 JS 事件 var 操作 div document 属性

一、事件基础

事件概述

JS使我们有能力创建动态页面,而事件是可以被JS侦测的行为

简单理解:触发----响应机制

网页中每个元素都可以产生某些可以触发JS的事件,例如点击事件

事件是由三部分组成 事件源 事件类型 事件处理程序 称为事件三要素

事件源: 事件被触发的对象 谁被触发

事件类型:如何触发,什么事件 例如鼠标点击,鼠标经过,键盘按下等

事件处理程序:通过函数赋值的方式完成

执行事件的步骤:

    1. 获取事件源
    2. 注册事件(绑定事件)
    3. 添加事件处理程序(采取函数赋值形式)
//第一步:获取按钮对象
var btn=document.getElementById("btn");
//第二步:绑定一个单击事件
//第三步:添加事件处理程序
btn.onclick=function(){//像这种为单击事件绑定的函数,我们称为单击响应函数
    alert("你好")
}

常见事件

鼠标事件

触发条件

onclick

当单击鼠标时运行脚本。

onmousedown

当按下鼠标按钮时运行脚本。

onmouseup

当松开鼠标按钮时运行脚本。

onmousemove

当鼠标指针移动时运行脚本。

onmouseover

当鼠标指针移至元素之上时运行脚本,不可以阻止冒泡。

onmouseout

当鼠标指针移出元素时运行脚本,不可以阻止冒泡。

onmouseenter

当鼠标指针移至元素之上时运行脚本,可以阻止冒泡。

onmouseleave

当鼠标指针移出元素时运行脚本,可以阻止冒泡。

onmousewheel

当转动鼠标滚轮时运行脚本。

onscroll

当滚动元素的滚动条时运行脚本。

键盘事件

触发条件

onkeyup

某个键盘按键被松开时触发**

onkeydown

某个键盘按键被按下时触发

onkeypress

某个键盘按键被按下时触发

表单事件

触发条件

onfocus

表单获得焦点触发**

onblur

表单失去焦点触发

oninput

表单每次输入触发**

onchange

表单内容发生改变时触发**

onselect

表单文本被选取时触发

onreset

表单重置时触发

onsubmit

表单提交时触发

二、操作元素 

JS的DOM操作可以改变网页内容、结构和样式,我们可以利用DOM操作元素来改变元素里面的内容、属性等 

改变元素内容

element.innerText 从起始位置到终止位置的内容,会去除html标签,同时空格和换行也会去掉

element.innerHTML 从起始位置到终止位置的全部内容,包括html标签,保留空格和换行

区别(读的区别/写的区别)

:innerText 不识别html标签,innerHTML识别html标签

:innerText,innerHTML可以获取元素内面的内容,innerText去除空格、换行和标签,只读文本,

innerHTML可以获取到元素里面的标签,同时保留空格和换行

<body>
  <!-- 需求:点击button,切换内容 -->
  <button>点我切换内容</button>
  <div>天气炎热</div>
  <script>
  // 1、获取元素
  var btn = document.querySelector("button");
var div = document.querySelector("div");
// 2、绑定事件
//3、事件处理函数
btn.onclick = function () {
  //console.log(div.innerText);
  //console.log(div.innerHTML);
  //方式一、操作元素内容--innerText
  // div.innerText = "天气凉爽";
  //方式二、操作元素内容--innerHTML
  div.innerHTML = "天气凉爽";
};    
</script>
  </body>

改变元素其他属性

src、href、id、alt、title等属性

<body>
  <!-- 需求:点击对应的按钮,可以切换图片已经更改title值 -->
  <button id="dog">小狗</button>
  <button id="cat">小猫</button><br /><br />
  <img src="./img/pic_01.jpg" title="小狗" />

  <script>
  // 1、获取元素
  var dog = document.querySelector("#dog");
var cat = document.querySelector("#cat");
var img = document.querySelector("img");
//2、绑定事件、处理函数
dog.onclick = function () {
  img.src = "./img/pic_01.jpg";
  img.title = "小狗";
};
cat.onclick = function () {
  img.src = "./img/pic_02.jpg";
  img.title = "小猫";
};
</script>
  </body>

操作表单元素属性

type、value、checked、selected、disabled等

<body>
  <!-- 需求:1、点击按钮,更换input里的显示内容为:‘内容被修改了’ 
需求2:点击按钮,按钮就被禁用了
-->
  <button>按钮</button>
  <input type="text" value="请输入内容" />
  <script>
  // 1、获取元素
  var btn = document.querySelector("button");
var int = document.querySelector("input");
// 绑定点击事件,处理函数
btn.onclick = function () {
  int.value = "内容被修改了";
  btn.disabled = true;
};
</script>
  </body>

操作样式属性

可以通过JS修改元素的大小、颜色、位置等样式

element.style 行内样式操作

(1)、JS里面的样式采取驼峰命名发,比如fontSize、backgroundClolor

(2)、JS修改style样式操作,产生的是行内样式,css权重比较高

element.className 类名样式操作

(1)、如果样式修改较多,可以采取操作类名的方式更改元素样式

(2)、class因为是个保留字,因此使用className来操作元素类名属性

(3)、className 会直接更改元素的类名,会覆盖原先的类名,如果想保留原先的类名,再添加更改的时,需要把原先类名加上

<body>
  <div class="box">box</div>
  <script>
  // 需求1:点击div,div颜色变色,用行内样式实现
  var box = document.querySelector(".box");
box.onclick = function () {
  box.style.backgroundColor = "red";
};
// 需求2:鼠标移入,div的宽高发生变化,字体大小变化,字体加粗
box.onmouseover = function () {
  // js里有个this的存在,在不同的情况下,指代不同的内容
  //在事件函数里,this指代调用者,也就是指向事件源
  this.className = "box1";
};
</script>
  </body>

排他思想

如果有同一组元素,想要某一个元素实现某种样式,需要用到循环的排他思想算法

步骤:

  1. 清除所有元素的样式
  2. 给当前元素设置样式
  3. 注意顺序不能颠倒
  <body>
    <!-- 需求:给当前点击的按钮,添加背景色 -->
    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <button>按钮4</button>
    <script>
      //1、获取到所有的按钮
      var btns = document.querySelectorAll("button");
      //2、通过循环,给所有的按钮绑定点击事件,处理函数
      for (var i = 0; i < btns.length; i++) {
        btns[i].onclick = function () {
          // 2.1清楚所有按钮的背景色
          for (var i = 0; i < btns.length; i++) {
            btns[i].style.backgroundColor = "";
          }
          //2.2
          this.style.backgroundColor = "red";
        };
      }
    </script>
  </body>

操作自定义属性

获取属性值:

方式一:element.属性 获取属性值(获取元素自身自带的属性,例如id,href,src等)

方式二:element.getAttribute('属性') 主要获取自定义的属性,我们程序员自己家的属性,也可以获取元素自带属性

设置属性值

方式一:element.属性='值' 设置属性值

方式二:element.setAttribute('属性','值') 设置自定义属性,也可以设置元素自带属性

移除某个属性

element.removeAttribute("属性"); 移除某个属性

  <body>
    <!-- 需求1:获取a标签对应的href属性值以及index属性值
         需求2:设置a标签对应的href属性值为京东,以及修改index属性值为2
         需求3:移除abc属性   
    -->
    <a href="https://www.baidu.com/" index="1" abc="123">百度</a>
    <br /><br />
    <button id="btn1">获取</button>
    <button id="btn2">设置</button>
    <button id="btn3">移除</button>
    <script>
      var a = document.querySelector("a");
      var btn1 = document.querySelector("#btn1");
      var btn2 = document.querySelector("#btn2");
      var btn3 = document.querySelector("#btn3");

      btn1.onclick = function () {
        // 需求1
        console.log(a.href, "自带属性");
        console.log(a.getAttribute("index"), "自定义属性");
        console.log(a.getAttribute("href"), "自带属性");
      };
      btn2.onclick = function () {
        // 需求2
        a.href = "https://www.jd.com/";
        a.setAttribute("index", "2");
      };
      btn3.onclick = function () {
        // 需求3
        a.removeAttribute("abc");
      };
    </script>
  </body>
设置h5自定义属性

为了区分自定义属性,还是元素自带属性

H5给我们新增了自定义属性规范:H5规定自定义属性以data-开头作为属性名并附值

获取自定义属性:

方式一:element.getAttribute('属性')

方式二:element.dataset.去除掉data-的属性名

 <body>
    <div data-index="abc" data-last-name="王"></div>
    <script>
      var div = document.querySelector("div");
      //设置自定义属性
      div.setAttribute("data-id", "hello");
      //获取自定义属性
      //方式一:element.getAttribute("自定义属性名")
      console.log(div.getAttribute("data-index"));
      //方式二:element.dataset.属性名
      console.log(div.dataset); //得到一个对象
      console.log(div.dataset.index); //读取对象
      console.log(div.dataset["id"]); //读取对象
      console.log(div.dataset.lastName); //驼峰命名法读取
    </script>
  </body>

 

 

 

 

标签:元素,JS,事件,var,操作,div,document,属性
From: https://blog.csdn.net/qq_60060362/article/details/143632631

相关文章

  • 最实用的隐私测试工具操作手册来了,错过你就亏了
    注:本工具仅适用于未加固的安卓debug包APK    在开始之前,建议大家先回顾一下我们之前发布的关于隐私合规检测的文章。本次分享的隐私测试工具和以往的xpose隐私检测方法,有很大区别,一个对比后支持范围和准确性,另外一个就是操作简便,兼容性强,报告查看方便;    旧......
  • laravel octane:octane命令行操作(laravel 11)
    一,修改代码后使生效:#phpartisanoctane:reloadINFOReloadingworkers...二,停止octane:说明;用supervisor管理服务,此操作不生效#phpartisanoctane:stopINFOStoppingserver...三,查看状态:#phpartisanoctane:statusINFOOctaneserverisrun......
  • c++执行shell操作
     message("----->>>>>shelldemo/CMakeLists.txt")#收集当前目录下所有的.cpp文件aux_source_directory(.DIR_SRCS)#添加可执行文件add_executable(shelldemo${DIR_SRCS})#链接需要的库target_link_libraries(shelldemo${LIB_LIB})/shelldemo/CMakeList......
  • 关于JS中继承
    继承,我理解就是把所有实例可能用到的属性和方法抽出来,单独放在一个“超类”中,一方面避免重复写代码,另一方面也会节省内存。如果单独用原型继承,引用值的处理是个问题如果单独用call(或者apply)实现代码调用完成继承,方法没法处理,每个实例都会独立生成一份方法,造成重复。所以,一把把二......
  • Three.js中文文档
    Three.js中文文档今天闲着没事,准备翻译一下three.js官方文档的英文目录。threejs英文文档地址threejs中文文档地址动画对象Animation编辑、解析播放帧动画。动作AnimationAction剪辑AnimationClip混合器AnimationMixer动画对象组AnimationObjectGroup动画工具AnimationU......
  • 前端使用pako对json串进行压缩,转成base64并且解压缩的过程
    1exportfunctioncompressAndb64encode(originalData){2//将字符串转换为字节序列3constbinaryString=encodeURIComponent(originalData)4constcharList=binaryString.split('')5constbinaryArray=charList.map(char=>char.charCodeAt(......
  • nodejs 18.20.4 juice 库将html中的全局CSS格式, 转化为每个元素内联的CSS格式
    执行下面命令,安装nodejs和npmubuntu@ubuntu22:~$sudoaptupdateubuntu@ubuntu22:~$sudoaptinstallnpm#npm是Node.js的包管理工具ubuntu@ubuntu22:~$sudoaptinstall-ycurlubuntu@ubuntu22:~$curl-fsSLhttps://deb.nodesource.com/setup_18.x|sudo-Eb......
  • node.js毕设一手包家政服务管理系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着社会经济的发展和人们生活水平的提高,家政服务需求日益增长。现有研究主要集中在家政服务的供需匹配、服务质量评价等方面,专门针对一手包家政服务管......
  • node.js毕设在线学习平台个性化推荐系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着互联网技术的快速发展,在线学习平台已经成为人们获取知识和技能的重要途径。现有研究主要集中在线学习平台的用户行为分析、推荐算法优化等方面,专门......
  • node.js毕设网上商城购物系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于网上商城购物系统的研究,现有研究主要以系统功能实现和优化为主,如用户登录、商品展示与交易流程等方面。专门针对系统中用户体验与商品类型及信息精......