JS -a标签和this在DOM的使用、使用DOM完成点击按钮操作div块和获取div块的CSS样式

news2024/11/28 8:41:41

a标签的索引问题和this

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
    window.onload=function()
    {
        //点击超链接以后,删除点击的员工的信息
        //获取所有的超链接
        var allA=document.getElementsByTagName("a");
        //为每一个超链接绑定一个单机响应函数
        for(var i=0;i<allA.length;i++)
        {
            alert("for循环正在执行"+i);

            allA[i].onclick=function()
            {
                alert("响应函数正在执行"+i)
                //此处this不能换为allA[i]
                //for循环会在页面加载完成后立即执行
                //而响应函数会在超链接被点击时才执行,也就是for循环先于函数执行
                //当响应函数执行时。for循环早已执行完毕
                //即i的值最终会变成3,所以allA[i]中的i最终得到的只会是3
                //可通过数据执行来验证

                //首先得到tr,也就是a的父节点的父节点
                var tr = this.parentNode.parentNode;
                //var name=tr.getElementsByTagName("td")[0].innerHTML;
                var name=tr.children[0].innerHTML;
                console.log(tr);
                console.log(name);
                //在删除之前设置弹出一个弹框
                var flag=confirm("确认删除"+name+"吗?");
                if(flag == true)
                {
                    //删除tr
                    tr.parentNode.removeChild(tr);
                }
                //此处可以使用this来进行操作
                //点击超链接以后,超链接会跳转页面,这个是超链接的默认行为
                //但我们此时不允许出现此默认行为,可以通过在响应函数的最后return false来取消默认行为
                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>
</body>
</html>

在这里插入图片描述

使用DOM完成点击按钮操作div块和获取div块的CSS样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
    #box1
    {
        width:200px;
        height:200px;
        background-color:red;
    }
    </style>

    <script type="text/javascript">
    window.onload=function()
    {
        //点击按钮一以后,修改box1的大小,即宽度和高度的像素

        //首先获取box1
        var box1=document.getElementById("box1");
        //为按钮绑定单击响应函数
        var btn01=document.getElementById("btn01");
        //给btn01绑定单击响应函数
        btn01.onclick=function()
        {
            //修改box1的宽度
            //通过JS修改元素的央视
            //语法 元素.style.样式名=样式值
            //如果css的样式名中含有-,这种名称在JS中是不合法的
            //修改方法是去掉-,并且后面的第一个字母大写
            box1.style.width="300px";//修改宽度
            box1.style.height="300px";//修改高度
            box1.style.backgroundColor="yellow";

            //通过style属性设置的样式都是内联样式
            //内联样式有较高的优先级,所以通过JS修改的样式往往会立即显示
            //如果在样式中写了!important,这此时样式会有最高的优先级
            //即使通过JS也不能覆盖样式,此时将会导致JS修改样式失败

        };

        //点击按钮二以后,读取元素的样式
        var btn02=document.getElementById("btn02");
        btn02.onclick=function()
        {
            console.log(box1.style.width);
            console.log(box1.style.height);
            console.log(box1.style.backgroundColor);
            //通过style属性设置和读取的都是内联样式
            //无法读取样式表中的样式
            //所以需要先点击摁钮一,然后才能顺利读取
        }
    }
    </script>
</head>
<body>
    <button id="btn01">按钮一</button>
    <button id="btn02">按钮二</button>
    <br><br>
    <div id="box1"></div>
</body>
</html>

使用DOM读取元素的CSS样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
    #box1
    {
        width:100px;
        height:100px;
        background-color: yellow;
    }
    </style>

    <script type="text/javascript">
    window.onload=function()
    {
        //点击按钮以后,读取box1的样式
        var box1=document.getElementById("box1");
        var btn01=document.getElementById("btn01");
        btn01.onclick=function()
        {
            //读取box1的宽度,样式表里的样式
            //获取元素的当前显示的样式
            //语法 元素.currentStyle.样式名
            //他可以用来读取当前元素正在显示的样式
            //alert(box1.currentStyle.height);
            //此方法适用的浏览器很少,但是IE适用

            //在其他浏览器中可以使用
            //getComputedStyle()这个方法来获取元素当前的样式
            //这个方法是window的方法,可以直接使用
            //需要两个参数,第一个是获取样式的元素,第二个可以传递一个伪元素,比如null
            //如果获取的样式没有设置值,则获取到的是真实的值(会随着浏览器实际大小变化),而不是默认值
            //比如没有设置width,那么获取到的不是auto,而是一个真实的像素值
            /**
            var box10bj=getComputedStyle(box1,null);
            console.log(box10bj.width);
            console.log(box10bj.height);
            console.log(box10bj.backgroundColor);
            **/

            console.log(getStyle(box1,"height"));
            console.log(getStyle(box1,"width"));
            console.log(getStyle(box1,"backgroundColor"));
        };

        
    };
    //定义一个函数,用来获取指定元素的当前的样式
    //所需参数:
    //obj 要获取样式的元素
    //name 要获取的样式名
    function getStyle(obj,name)
    {
        if(window.getComputedStyle)
        //在全局作用域中找此方法时,此方法就是个属性,如果找寻不到,系统不会报错
        {
            //正常浏览器的方式,具有getComputedStyle()方法
            return getComputedStyle(obj,null)[name];//用中括号来声明name是个变量
        }
        else
        {
            //IE8的方式中,没有getComputedStyle()方法
            //也可以用obj.currentStyle()
            return obj.currentStyle[name];//这是IE8的方式
        }    
    };

    //通过currentStyle和getComputedStyle()读取到的样式都是只读的,不能修改
    //如果需要修改必须通过style属性
    </script>
</head>
<body>
    <button id="btn01">按钮一</button>
    <br><br>
    <div id="box1"></div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
    #box1
    {
        width: 100px;
        height: 100px;
        background-color:red;
        padding: 10px;
        border:10px solid yellow;
        /*margin: auto;*/
    }
    #box2
    {
        padding:100px;
        background-color: #bfa;
    }
    #box4
    {
        width: 200px;
        height: 300px;
        background-color: #bfa;
        overflow: auto;
        /*在内部box5的大小溢出的情况下,把overflow设置为hidden,那么就可以制止内部像素的超出*/
        /*如果设置为auto,那么就可以呈现滚动条。如果宽度和高度都超出,那么两个边界都会出现滚动条*/
    }
    #box5
    {
        width: 400px;
        height: 600px;/*如果把高度像素值设置的比外部box4大,那么就会超出*/
        background-color: yellow;
    }
    </style>
    <script type="text/javascript">
    window.onload=function()
    {
        var box1=document.getElementById("box1");
        var btn01=document.getElementById("btn01");
        var box3=document.getElementById("box3");
        var box4=document.getElementById("box4");
        btn01.onclick=function()
        {
            //clientWidth
            //clientHeight
            //这两个属性可以获取元素的可见宽度和高度,不包括边框
            //这些属性都是不带px的,都是数值,可以直接进行计算
            //这些属性都是只读的,不能进行修改
            console.log(box1.clientWidth);
            console.log(box1.clientHeight);
            //返回的都是实际宽度和高度

            //offsetWidth
            //offsetHeight
            //可以获取,包括内容区,内边距和边框
            console.log(box1.offsetHeight);
            console.log(box1.offsetWidth);

            //offsetParent
            //可以用来获取当前元素的定位父元素
            //会获取离当前元素最近的开启了定位的祖先元素(即position的值不是static)
            //如果所有的祖先元素都没有开启定位,则默认返回body
            var op=box1.offsetParent;
            console.log(op);
            console.log(op.id);

            //offsetLeft
            //当前元素相对于其定位元素的水平偏移量
            //offsetTop
            //当前元素相对于其定位父元素的垂直偏移量
            //offsetTop用法与上面的类似
            console.log(box1.offsetLeft);
            //console.log(box3.offsetLeft);

            //scrollWidth
            //scrollHeight
            //可以获取整个滚动区域的高度和宽度,不同于clientHeight只能获取可见的那一块区域的像素大小
            console.log(box4.clientHeight);//控制台输出300px,也就是设定的300px(可见)
            console.log(box4.scrollHeight);//控制台输出600px,也就是可见的滚动区域的600px

            //scrollLeft可以获取水平滚动条滚动的距离
            //scrollTop可以获取垂直滚动条滚动的距离
            console.log(box4.scrollLeft);
            console.log(box4.scrollTop);

            //当满足scrollHeight - scrollTop == clientHeight
            //说明垂直滚动条滚到底了
            console.log(box4.clientHeight);
            alert(box4.scrollHeight - box4.scrollTop);

            //当满足scrollWidth - scrollLeft ==clientWidth(部分)
            //说明水平滚动条滚动到底了
            console.log(box4.clientWidth);
            alert(box4.scrollWidth - box4.scrollLeft);
            //部分浏览器可能会出现相减的值小于的情况

            
        };
    };
    </script>
</head>
<body id="ls">
    <button id="btn01">功能一</button>
    <br><br>
    <div id="box4">
        <div id="box5"></div>
    </div>
    <br><br>
    <div id="box2" style="position: relative;">
        <div id="box1"></div>
    </div>
    </div>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1599384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT 串口助手 学习制作记录

QT 串口助手qt 学习制作记录 参考教程&#xff1a;​​​​​​QT初体验&#xff1a;手把手带你写一个自己的串口助手_qt设计串口助手的流程图-CSDN博客 Qt之串口编程&#xff08;添加QSerialPort模块&#xff09;_如何安装 qt串口模块教程-CSDN博客 串口调试助手&#xff1…

聚道云软件连接器助力医疗器械有限公司打通金蝶云星辰与飞书

摘要 聚道云软件连接器成功将金蝶云星辰与飞书实现无缝对接&#xff0c;为某医疗器械有限公司解决采购订单、付款单同步、审批结果回传、报错推送等难题&#xff0c;实现数字化转型升级。 客户介绍 某医疗器械有限公司是一家集研发、生产、销售为一体的综合性医疗器械企业。…

揭秘AI精准输出:如何构建完美的AIGC提示词?

揭秘AI精准输出&#xff1a;如何构建完美的AIGC提示词&#xff1f;&#x1f916; 文章目录 揭秘AI精准输出&#xff1a;如何构建完美的AIGC提示词&#xff1f;&#x1f916;摘要引言正文&#x1f4d8; 提示词的基本概念1. 什么是提示词&#xff1f;2. 提示词的作用 &#x1f4d…

锁策略^o^

锁策略 一&#xff0c;悲观锁 VS 乐观锁 悲观锁&#xff1a;总是假设最坏的情况&#xff0c;每次去拿数据的时候都认为别人会修改&#xff0c;所以每次在拿数据的时候都会碰上锁&#xff0c;这样别人想拿这个数据就会阻塞&#xff0c;直到它拿到锁。 乐观锁&#xff1a;假设…

如何理解服务器的硬防和软防

关于服务器防御相关的知识很多新手都不是很了解&#xff0c;服务器防御分为服务器硬防和软防。 一、服务器硬防 服务器硬防主要指的是硬件防火墙&#xff0c;能够在硬件设备中嵌入防火墙的防御程序&#xff0c;是一种专门用来保护网络不受未授权访问所设计的设备&#xff0c;硬…

保护你的数据隐私!新技术将实现绝对安全的「量子云计算」

听说过物质-光子混合实现可验证的盲量子计算&#xff08;blind quantum computing&#xff09;吗&#xff1f; "盲量子计算"是一种使用户能够远程利用量子计算服务商的量子设备执行计算的模式。这一技术可能使数百万个人和企业安全地接入下一代量子计算机&#xff0c…

Big Data and Cognitive Computing (IF=3.7) 计算机/大数据/人工智能期刊投稿

Special Issue: Artificial Cognitive Systems for Computer Vision 欢迎计算机/大数据/人工智能/计算机视觉相关工作的投稿&#xff01; 影响因子3.7&#xff0c;截止时间2024年12月31日 投稿咨询&#xff1a;lqyan18fudan.edu.cn 投稿网址&#xff1a;https://www.mdpi.com/j…

负荷预测 | Matlab基于TCN-GRU-Attention单变量时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-GRU-Attention单变量时间序列多步预测&#xff1b; 2.单变量时间序列数据集&#xff0c;采用前12个时刻预测未来96个时刻的数据&#xff1b; 3.excel数据方便替换&#xff0c;运行环境matlab2023及以…

创纪录的里程碑!光镊阵列捕获逾6,000中性原子,量子计算再达新高

论文链接&#xff1a; https://arxiv.org/abs/2403.12021 2024年3月18日&#xff0c;研究人员成功开发出一种大规模光镊阵列&#xff0c;能够在12,000个位点上捕获超过6,100个中性原子&#xff0c;同时在几个关键性能指标上达到新的高度&#xff1a; 1&#xff09;相干时间达到…

智慧公厕解决方案易集成好使用的智能硬件

在现代城市建设中&#xff0c;智慧公厕的需求日益增长。为了提供更好的用户体验和更高效的管理&#xff0c;易集成、好使用的智能硬件成为智慧公厕解决方案的关键组成部分。 1. 蹲位有人无人感应器&#xff1a;是用于检测厕位有人无人的设备&#xff0c;根据现场不同的安装条件…

BTI功能验证与异常解析

BTI分支目标识别精讲与实践系列 思考 1、什么是代码重用攻击&#xff1f;什么是ROP攻击&#xff1f;区别与联系&#xff1f; 2、什么是JOP攻击&#xff1f;间接分支跳转指令&#xff1f; 3、JOP攻击的缓解技术&#xff1f;控制流完整性保护&#xff1f; 4、BTI下的JOP如何…

AGV小车 | 提升仓储物流运营效率的好帮手

agv 随着物联网、机器视觉、仓储机器人、无人机等新技术的应用&#xff0c;物流仓储自动化技术正在以较快的速度发生变革。仓储机器人在智能仓储系统中的应用不仅为物流安全保驾护航也助力智能物流发展。 市场的爆发一方面来源于需求的增长&#xff0c;从传统的制造业到电商业…

mp4怎么改m4v发微信?教你发微信视频不被压缩。

在微信发送一般的MP4视频时&#xff0c;为了便于传输速度&#xff0c;微信会对其进行视频压缩&#xff0c;但是微信对于m4v格式却不会压缩。 m4v是一种应用于网络视频点播网站和移动手持设备的视频格式&#xff0c;由苹果公司创造&#xff0c;基于mpeg-4编码第二版&#xff0c…

飞桨Ai(二)paddle使用CPU版本可以正常识别,切换为GPU版本时无法识别结果

一、问题描述&#xff1a; 刚开始用paddle的CPU版本&#xff0c;对训练好的模型进行推理&#xff0c;正常识别出想要的结果后来尝试使用paddle的GPU版本&#xff0c;然后发现识别出来是空的 二、系统思路&#xff1a; 最终系统环境如下&#xff1a; 系统&#xff1a;win10 …

【考研数学】全年各阶段用书汇总+资料分享

我一战备考很迷茫&#xff0c;身边室友也都是&#xff0c;和室友一起去买资料&#xff0c;网上推荐的看到了就都买了 大家都不知道怎么样才能选对数学参考书然后快速进入备考状态&#xff0c;最后犹犹豫豫买了一堆资料都没有正式开始备考... 从小都算是身边人口中“偏科&…

Rabbit MQ------>延迟队列!!!

一、场景&#xff1a; 1.定时发布文章 2.秒杀之后&#xff0c;给30分钟时间进行支付&#xff0c;如果30分钟后&#xff0c;没有支付&#xff0c;订单取消。 3.预约餐厅&#xff0c;提前半个小时发短信通知用户。 A -> 13:00 17:00 16:30 延迟时间&#xff1a; 7*30 * 60…

Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet

简介 FreeAskInternet 是一个完全免费、私有且本地运行的搜索引擎&#xff0c;并使用 LLM 生成答案&#xff0c;无需 GPU。用户可以提出问题&#xff0c;系统会进行多引擎搜索&#xff0c;并将搜索结果合并到ChatGPT3.5 LLM中&#xff0c;并根据搜索结果生成答案。 什么是 Fr…

最新彩虹知识付费商城源码 V3.4

最新彩虹知识付费商城源码 V3.4&#xff0c;支持二级分类&#xff0c;多级分销&#xff0c;秒杀&#xff0c;砍价&#xff0c;团购&#xff0c;首页继续浏览&#xff0c;分站个人虚拟余额自定义&#xff0c;最新批量对接&#xff0c;批量下载图片&#xff0c;批量替换标题&…

6本期刊直接被踢!!最新4月SCI/SSCI期刊目录更新,请查收~

又到了一月一度的科睿唯安官网更新Web of Science核心期刊目录的时候&#xff0c;小编今天带大家一起来看看最新的SCI/SSCI期刊目录有哪些变化吧。 继上次SCI期刊目录和SSCI期刊目录更新之后&#xff0c;本次4月更新共有9本期刊发生变动&#xff1a; • SCIE&#xff1a;有5本期…

【重装系统】分配D盘

1.右键“此电脑”&#xff0c;点击管理 2.选择“存储”–磁盘管理 3.右键未分配磁盘–新建简单卷 4.一路默认设置即可