当前位置: 首页 > news >正文

【前端】JavaScript入门及实战106-110

文章目录

  • 106 a的索引问题
  • 107 使用DOM操作CSS
  • 108 读取元素当前的样式
  • 109 getStyle()
  • 110 其他样式操作的属性
  • 滚动条练习

106 a的索引问题

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<script type="text/javascript">	window.onload = function(){/*点击超链接以后,删除一个员工的信息			*/// 获取所有超链接var allA = document.getElementsByTagName("a");// 为每个超链接绑定一个单击响应函数for(var i = 0; i < allA.length; i++){/*for循环会在页面加载完成之后立即执行,而响应函数会在超链接被点击时才执行,当响应函数执行时,for循环早已执行完毕*/alert("for循环正在执行" + i);allA[i].onclick = function(){alert("响应函数正在执行" + i); // i = 3console.log(allA[i] == this); // false//alert(allA[i]);return false;			};}};				</script>	
</head>
<body><table id="employeeTable"><tr><th>Name</th><th>Email</th><th>Salary</th><th>&nbsp;</th></tr><tr><td>Tom</td><td>tom@tom.com</td><td>5000</td><td><a href="javascript:;">Delete</a></td></tr><tr><td>Jerry</td><td>jerry@sohu.com</td><td>8000</td><td><a href="deleteEmp?id=002">Delete</a></td></tr><tr><td>Bob</td><td>bob@tom.com</td><td>10000</td><td><a href="deleteEmp?id=003">Delete</a></td></tr></table><div id="formDiv"><h4>添加新员工</h4><table><tr><td class="word">name: </td><td class="inp"><input type="text" name="empName" id="empName" /></td></tr><tr><td class="word">email: </td><td class="inp"><input type="text" name="email" id="email" /></td></tr><tr><td class="word">salary: </td><td class="inp"><input type="text" name="salary" id="salary" /></td></tr><tr><td colspan="2" align="center"><button id="addEmpButton" value="abc">Submit</button></td></tr></table></div>
</body>
</html>

107 使用DOM操作CSS

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css">#box1 {width: 200px;height: 200px;background-color: red;<!--background-color: red !important;-->}</style><script type="text/javascript">	window.onload = function(){/*点击按钮之后,修改box1的大小*/// 获取box1var box1 = document.getElementById("box1");//为按钮绑定单击响应函数var btn01 = document.getElementById("btn01");btn01.onclick = function(){/*通过JS修改元素的样式语法:元素.style.样式名 = 样式值注意:如果CSS样式中含有-,不合法,如background-color需要将这种样式名修改为驼峰命名法,去掉-,然后将-后的字母大写border-top-width:borderTopWidth通过style属性设置的样式都是内联样式,而内联样式有较高的优先级,所以通过JS修改的样式往往会立即显示,但是如果在样式中写了!important,则此时样式会有最高的优先级,即使通过JS也不能覆盖该样式,此时将会导致JS修改样式失效,所以尽量不要为样式添加!important*/box1.style.width = "300px";box1.style.height = "300px";box1.style.backgroundColor = "yellow";				};// 点击按钮2以后,读取元素的样式var btn02 = document.getElementById("btn02");btn02.onclick = function(){// 读取box1的样式/*语法:元素.style.样式名通过style属性读取和设置的都是内联样式,无法读取样式表中的样式*/alert(box1.style.width);};};</script>	
</head>
<body><button id="btn01">点一下1</button><button id="btn02">点一下2</button><div id="box1"></div>
</body>
</html>

108 读取元素当前的样式

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css">#box1 {width: 100px;height: 100px;background-color: yellow;}</style><script type="text/javascript">	window.onload = function(){/*点击按钮之后,读取box1的样式*/// 获取box1var box1 = document.getElementById("box1");//为按钮绑定单击响应函数var btn01 = document.getElementById("btn01");btn01.onclick = function(){/*获取元素的当前显示的样式语法:元素.currentStyle.样式名它可以用来读取当前元素正在显示的样式谁生效获取谁如果当前元素没有设置该样式,则获取默认值currentStyle只有IE浏览器支持,其他浏览器都不支持*///box1.currentStyle.width = "200px"; // 错误alert(box1.currentStyle.width);/*在其他浏览器中可以使用getComputedStyle()这个方法来获取元素当前的样式这个方法是window的方法,可以直接使用需要两个参数:1. 要获取样式的元素2. 可以传递一个伪元素,一般都传null该方法会返回一个对象,对象中封装了当前元素对应的样式可以通过对象.样式名来读取样式,如果获取的样式没有设置,则会获取到真实的值,而不是默认值比如:没有设置width,他不会获取到auto,而是一个长度但是该方法不支持IE8及以下浏览器通过currentStyle和getComputedStyle()读取到的样式都是只读的,不能修改,如果要修改必须通过style属性*///var obj = getComputedStyle(box1, null);//alert(obj.width);//alert(getComputedStyle(box1, null).backgroundColor); // 正常浏览器//alert(box1.currentStyle.backgroundColor); // IE8的方式alert(getStyle(box1, "width"));};};/*定义一个函数,用来获取指定元素的当前的样式参数:1. obj 要获取的元素2. name 要获取的样式名*/function getStyle(obj, name){// 正常浏览器的方式//return getComputedStyle(obj, null)[name]; // 元素.style["属性"]// IE8的方式//return obj.currentStyle[name];//???}</script>	
</head>
<body><button id="btn01">点一下</button><div id="box1" style="width: 200px; background-color: red;"></div>
</body>
</html>

109 getStyle()

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css">#box1 {width: 100px;height: 100px;background-color: yellow;}</style><script type="text/javascript">	window.onload = function(){var box1 = document.getElementById("box1");var btn01 = document.getElementById("btn01");btn01.onclick = function(){var v = getStyle(box1, "width");alert(v);};};/*定义一个函数,用来获取指定元素的当前的样式参数:1. obj 要获取的元素2. name 要获取的样式名*/function getStyle(obj, name){	// 变量没找到就报错,属性没找到是undefinedif(window.getComputedStyle){// 正常浏览器的方式,具有getComputedStyle()方法return getComputedStyle(obj, null)[name];}else{// IE8的方式,没有getComputedStyle()方法return obj.currentStyle[name];}		//return window.getComputedStyle? getComputedStyle(obj, null)[name]: obj.currentStyle[name];/*if(obj.currentStyle){// 正常浏览器的方式,具有getComputedStyle()方法return obj.currentStyle[name];}else{// IE8的方式,没有getComputedStyle()方法return getComputedStyle(obj, null)[name];}*/		}</script>	
</head>
<body><button id="btn01">点一下</button><div id="box1" style="width: 200px; background-color: red;"></div>
</body>
</html>

110 其他样式操作的属性

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css">#box1 {width: 100px;height: 100px;background-color: red;padding: 10px;border: 10px solid yellow;}# box2 {padding: 100px;background-color: #bfa;}# box4 {width: 200px;height: 300px;background-color: #bfa;overflow: auto;}# box5 {width: 150px;height: 600px;background-color: yellow;}</style><script type="text/javascript">	window.onload = function(){var box1 = document.getElementById("box1");var btn01 = document.getElementById("btn01");var box4 = document.getElementById("box4");btn01.onclick = function(){/*clientWidthclientHeight这两个属性可以获取元素的可见宽度和高度,这些属性都是不带px的,返回都是一个数字,可以直接进行计算,会获取元素的宽度和高度,包括内容区和内边距,					这些属性都是只读的,不能修改*/alert(box1.clientWidth);alert(box1.clientHeight);//box1.clientHeight = 300; // 无用/*offsetWidthoffsetHeight获取元素的整个高度和宽度,包括内容区,内边距和边框*/alert(box1.offsetWidth);/*offsetParent可以用来获取当前元素和定位父元素会获取到离当前元素最近的开启了定位的祖先元素,如果所有的祖先元素都没有开启定位,则返回body*/var op = box1.offsetParent;alert(op.id); // box2/*offsetLeft当前元素相对于其定位父元素的水平偏移量offsetTop当前元素相对于其定位父元素的垂直偏移量*/alert(box1.offsetLeft); // 100/*scrollWeightscrollHeight可以获取元素整个滚动区域的宽度和高度*///alert(box4.clientHeight); // 300alert(box4.scrollHeight); // 600/*scrollLeft:可以获取水平滚动条滚动的距离scrollTop:可以获取垂直滚动条滚动的距离*/alert(box4.scrollLeft);alert(box4.scrollTop);//alert(box4.clientHeight); // 283alert(box4.scrollHeight); // 600//当满足scrollHeight - scrollTop = clientHeight时,说明垂直滚动条滚动到底了alert(box4.scrollHeight - box4.scrollTop); // 滚动条到底部:283//当满足scrollWidth - scrollLeft = clientWidth时,说明水平滚动条滚动到底了alert(box4.scrollHeight - box4.scrollTop); };};</script>	
</head>
<body><button id="btn01">点一下</button><br><div id="box4"><div id="box5"></div></div><br><div id="box3" style="position: relative;"><div id="box2" style="position: relative;"><div id="box1"></div></div></div>
</body>
</html>

滚动条练习

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">	<style type="text/css">#info {width: 300px;height: 500px;background-color: #bfa;overflow: auto;}</style><script type="text/javascript">	window.onload = function(){/*当垂直滚动条到底时,表单项可用onscroll:该事件会在元素的滚动条滚动时触发*/var info = document.getElementById("info");var inputs = document.getElementsByTagName("input");info.onscroll = function(){// 检查垂直滚动条是否滚动到底if(info.scrollHeight - info.scrollTop == info.clientHeight){//滚动条滚动到底,使表单项可用/*disabled属性可以设置一个元素是否禁用true是禁用,false是不禁用*/inputs[0].disabled = false;inputs[1].disabled = false;}};};</script>	
</head>
<body><h3>欢迎亲爱的用户注册</h3><p id="info">请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议,请阅读以下协议</p><!--如果为表单添加disabled="disabled"则表项将变为不可用的状态--><input type="checkbox" disabled="disabled" />我已仔细阅读协议,一定遵守<input type="submit" value="注册" disabled="disabled" />
</body>
</html>

相关文章:

【前端】JavaScript入门及实战106-110

文章目录 106 a的索引问题107 使用DOM操作CSS108 读取元素当前的样式109 getStyle()110 其他样式操作的属性滚动条练习 106 a的索引问题 <!DOCTYPE html> <html> <head> <title></title> <meta charset"utf-8"> <script typ…...

git 版本回退-idea

1、选中项目&#xff0c;右键&#xff0c;打开 git历史提交记录 2、选中想要回退的版本&#xff0c;选择 hard&#xff08;不保留版本记录&#xff09; 3、最终选择强制提交&#xff08;必须强制&#xff09; OK&#xff0c;搞定...

[安洵杯 2019]easy_serialize_php

进入界面然后 <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); } 这就是个正则if($_SESSION){unset($_SESSION); 销毁 }$_SESSION["use…...

2024年软件测试面试题大全【含答案】

一、面试基础题 简述测试流程: 1、阅读相关技术文档&#xff08;如产品PRD、UI设计、产品流程图等&#xff09;。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例&#xff08;等价类划分法、边界值分析法等&#xff09;。 5、用例评审(…...

返回倒数第 k 个节点 - 力扣(LeetCode)

面试题 02.02. 返回倒数第 k 个节点 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/int kthToLast(struct ListNode* head, int k) {struct ListNode* fastnode head…...

12 前端工程化

组件化 1. 组件化理解 就是将页面的某一部分独立出来&#xff0c;将这一部分的数据层&#xff08;M&#xff09;、视图层&#xff08;V&#xff09;和控制层&#xff08;C&#xff09;用黑盒的形式全部封装到一个组件内&#xff0c;暴露出一些开箱即用的函数和属性供外部调用。…...

跨文档消息传递:WebKit中的Web通信新纪元

跨文档消息传递&#xff1a;WebKit中的Web通信新纪元 在现代Web应用中&#xff0c;跨文档消息传递&#xff08;Cross-document messaging&#xff09;是一种允许不同源的文档进行通信的机制。这种机制对于构建复杂的Web应用&#xff0c;如嵌入式框架&#xff08;iframes&#…...

面试题 33. 二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列 题目描述示例 题解递归单调栈 题目描述 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 示例 参考以下这颗二叉搜索树&#…...

Web响应式设计———1、Grid布局

1、网格布局 Grid布局 流动网格布局是响应式设计的基础。它通过使用百分比而不是固定像素来定义网格和元素的宽度。这样&#xff0c;页面上的元素可以根据屏幕宽度自动调整大小&#xff0c;适应不同设备和分辨率。 <!DOCTYPE html> <html lang"en"> &l…...

ESP32开发进阶: 训练神经网络

一、网络设定 我们设定一个简单的前馈神经网络&#xff0c;其结构如下&#xff1a; 输入层&#xff1a;节点数&#xff1a;2&#xff0c;接收输入数据&#xff0c;每个输入样本包含2个特征&#xff0c;例如 {1.0, 0.0}, {0.0, 1.0} 等。 隐藏层&#xff1a;节点数&#xff1a;…...

全国区块链职业技能大赛国赛考题前端功能开发

任务3-1:区块链应用前端功能开发 1.请基于前端系统的开发模板,在登录组件login.js、组件管理文件components.js中添加对应的逻辑代码,实现对前端的角色选择功能,并测试功能完整性,示例页面如下: 具体要求如下: (1)有明确的提示,提示用户选择角色; (2)用户可看…...

直接插入排序算法详解

直接插入排序&#xff08;Straight Insertion Sort&#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常采用in-place排…...

sql手动自增id

有时候在运维处理数据的时候&#xff0c;需要给某张表插入新的记录&#xff0c;那么需要知道最新插入数据的id,并在最新id的基础上加上id增长步长获取新的id,这个过程往往需要现将max出来加1,再手动补充到sql语句中&#xff0c;很麻烦&#xff0c;而且数据多的时候容易出错。有…...

10_TypeScript中的泛型

TypeScript中的泛型&#xff09; 一、泛型的定义二、泛型函数三、泛型类&#xff1a;比如有个最小堆算法&#xff0c;需要同时支持返回数字和字符串两种类型。通过类的泛型来实现四、泛型接口五、泛型类 --扩展 把类作为参数类型的泛型类1、实现&#xff1a;定义一个 User 的类…...

Unity3D之TextMeshPro使用

文章目录 1. TextMeshPro简介2. TextMeshPro创建3. TextMeshPro脚本中调用4. TextMeshPro字体设置及中文支持过程中出现的一些问题 1. TextMeshPro简介 【官网文档】https://docs.unity.cn/cn/2020.3/Manual/com.unity.textmeshpro.html TextMeshPro 是 Unity 的最终文本解决…...

K8S 上部署 Prometheus + Grafana

文章目录 一、使用 Helm 安装 Prometheus1. 配置源2. 下载 prometheus 包3. 安装 prometheus4. 卸载 二、使用 Helm 安装 Grafana1. 配置源2. 安装 grafana3. 访问4. 卸载 一、使用 Helm 安装 Prometheus 1. 配置源 地址&#xff1a;https://artifacthub.io/packages/helm/pro…...

雷军的逆天改命与顺势而为

雷军年度演讲前&#xff0c;朋友李翔提了一个问题&#xff1a;雷军造车是属于顺势而为还是逆势而为&#xff1f;评论互动区有一个总结&#xff0c;很有意思&#xff0c;叫“顺势逆袭”。 大致意思是产业趋势下小米从手机到IOT再切入汽车&#xff0c;是战略的必然&#xff0c;不…...

Leetcode 11. 盛最多水的容器

Leetcode 11. 盛最多水的容器 Leetcode 11. 盛最多水的容器 一、题目描述二、我的想法 一、题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成…...

Java笔试分享

1、设计模式&#xff08;写>3种常用的设计模式&#xff09; 设计模式是在软件工程中解决常见问题的经验性解决方案。以下是一些常用的设计模式&#xff1a; 单例模式&#xff08;Singleton&#xff09;&#xff1a; 意图&#xff1a;确保一个类只有一个实例&#xff0c;并…...

LeetCode:对称的二叉树(C语言)

1、问题概述&#xff1a;给一个二叉树&#xff0c;看是否按轴对称 2、示例 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 3、分析 &#xff08;1&a…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...