【前端】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> </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、选中项目,右键,打开 git历史提交记录 2、选中想要回退的版本,选择 hard(不保留版本记录) 3、最终选择强制提交(必须强制) OK,搞定...
[安洵杯 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、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例(等价类划分法、边界值分析法等)。 5、用例评审(…...
返回倒数第 k 个节点 - 力扣(LeetCode)
面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode) /*** 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. 组件化理解 就是将页面的某一部分独立出来,将这一部分的数据层(M)、视图层(V)和控制层(C)用黑盒的形式全部封装到一个组件内,暴露出一些开箱即用的函数和属性供外部调用。…...
跨文档消息传递:WebKit中的Web通信新纪元
跨文档消息传递:WebKit中的Web通信新纪元 在现代Web应用中,跨文档消息传递(Cross-document messaging)是一种允许不同源的文档进行通信的机制。这种机制对于构建复杂的Web应用,如嵌入式框架(iframes&#…...
面试题 33. 二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列 题目描述示例 题解递归单调栈 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 示例 参考以下这颗二叉搜索树&#…...
Web响应式设计———1、Grid布局
1、网格布局 Grid布局 流动网格布局是响应式设计的基础。它通过使用百分比而不是固定像素来定义网格和元素的宽度。这样,页面上的元素可以根据屏幕宽度自动调整大小,适应不同设备和分辨率。 <!DOCTYPE html> <html lang"en"> &l…...
ESP32开发进阶: 训练神经网络
一、网络设定 我们设定一个简单的前馈神经网络,其结构如下: 输入层:节点数:2,接收输入数据,每个输入样本包含2个特征,例如 {1.0, 0.0}, {0.0, 1.0} 等。 隐藏层:节点数:…...
全国区块链职业技能大赛国赛考题前端功能开发
任务3-1:区块链应用前端功能开发 1.请基于前端系统的开发模板,在登录组件login.js、组件管理文件components.js中添加对应的逻辑代码,实现对前端的角色选择功能,并测试功能完整性,示例页面如下: 具体要求如下: (1)有明确的提示,提示用户选择角色; (2)用户可看…...
直接插入排序算法详解
直接插入排序(Straight Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排…...
sql手动自增id
有时候在运维处理数据的时候,需要给某张表插入新的记录,那么需要知道最新插入数据的id,并在最新id的基础上加上id增长步长获取新的id,这个过程往往需要现将max出来加1,再手动补充到sql语句中,很麻烦,而且数据多的时候容易出错。有…...
10_TypeScript中的泛型
TypeScript中的泛型) 一、泛型的定义二、泛型函数三、泛型类:比如有个最小堆算法,需要同时支持返回数字和字符串两种类型。通过类的泛型来实现四、泛型接口五、泛型类 --扩展 把类作为参数类型的泛型类1、实现:定义一个 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. 配置源 地址:https://artifacthub.io/packages/helm/pro…...
雷军的逆天改命与顺势而为
雷军年度演讲前,朋友李翔提了一个问题:雷军造车是属于顺势而为还是逆势而为?评论互动区有一个总结,很有意思,叫“顺势逆袭”。 大致意思是产业趋势下小米从手机到IOT再切入汽车,是战略的必然,不…...
Leetcode 11. 盛最多水的容器
Leetcode 11. 盛最多水的容器 Leetcode 11. 盛最多水的容器 一、题目描述二、我的想法 一、题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成…...
Java笔试分享
1、设计模式(写>3种常用的设计模式) 设计模式是在软件工程中解决常见问题的经验性解决方案。以下是一些常用的设计模式: 单例模式(Singleton): 意图:确保一个类只有一个实例,并…...
LeetCode:对称的二叉树(C语言)
1、问题概述:给一个二叉树,看是否按轴对称 2、示例 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 3、分析 (1&a…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
PydanticAI快速入门示例
参考链接:https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...
