JavaWeb——JavaScript(二)

本文深入解析JavaScript中常见的事件如onload、onclick等,及其注册方式,同时详述了DOM对象document的方法,包括getElementById、getElementsByName、getElementsByTagName及createElement等,展示了如何运用这些方法实现动态页面效果。

JS的事件

事件是电脑输入设备与页面进行交互的响应,我们称之为事件。
常用的事件:

  • onload : 加载完成事件 。页面加载完毕后,常用做js代码初始化操作。
  • onclick:单击事件 。 常用于按钮的点击响应操作。
  • onblur:失去焦点事件。常用于输入框失去焦点后验证其输入是否合法。
  • onchange :内容发生改变事件。 常用于下拉列表和输入框内容发生改变后操作。
  • onsubmit:表单提交事件。常用于表单提交前,验证所有表单项是否合法。

事件的注册
就是当事件响应后要执行哪些代码,就是事件的注册(也叫绑定)。事件注册可以分为静态注册和动态注册。

  • 静态注册事件:通过html 标签的事件属性直接赋予事件响应后的代码 。
  • 动态注册事件:先通过js代码得到dom对象,再通过dom对象.事件名 = function(){}这种形式赋予事件响应后的代码。其基本步骤是:1.获取标签对象,2.标签对象.事件名=function(){}

注册onload事件:
静态注册:
在这里插入图片描述
通过onload的事件属性,赋予响应后代码。
动态注册:
在这里插入图片描述
在js代码里固定的写法。window.onload = function(){} ,在花括号内写响应后的代码。

注册onclick事件
静态注册:
在这里插入图片描述

动态注册:
在这里插入图片描述

注册onblur事件:
在这里插入图片描述
注册onchange事件
在这里插入图片描述

注册onsubmit事件
静态注册:
在这里插入图片描述
注意静态注册时,表单不合法时的情况。

动态注册:
在这里插入图片描述

DOM对象

document对象:
document对象管理了所有html的内容。它是一种树结构文档,有层级的关系。它把所有的标签、属性、文本都对象化了。我们可以通过document对象访问所有的标签对象。

document方法

使用document.getElementById 获得标签对象,并且完成一个用户名是否合法的验证功能。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function check() {
            var usernameObj = document.getElementById("username");
             var username = usernameObj.value ;
             var patt = /^\w{5,12}$/;
             var userSpanObj = document.getElementById("userSpan");

             if(patt.test(username)){
                 userSpanObj.innerText = "用户名合法";
             }else {
                 userSpanObj.innerText = "用户名不合法";
             }
        }
    </script>
</head>
<body>
用户名:<input type="text" id="username" value="默认值"/>
    <button onclick="check()"> 校验</button>
    <span id="userSpan" ></span>

</body>
</html>

效果:
在这里插入图片描述

使用 document.getElementsByName 方法获取相同name的标签数组,完成一个复选框的功能。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function checkAll() {
            //getElementsByName 方法获得的是标签对象的数组
            //数组顺序按照name顺序排序
            var hobbiesObj = document.getElementsByName("hobby");
            for(var i=0;i < hobbiesObj.length;i++){
                hobbiesObj[i].checked = true;
            }
        }
        function checkNO() {
            var hobbiesObj = document.getElementsByName("hobby");
            for(var i=0;i<hobbiesObj.length;i++){
                hobbiesObj[i].checked = false;
            }
        }
        function reverse() {
            var hobbiesObj = document.getElementsByName("hobby");
            for(var i=0;i<hobbiesObj.length;i++){
                hobbiesObj[i].checked = !hobbiesObj[i].checked;
            }
        }
    </script>
</head>
<body>
    <input type="checkbox" name="hobby"  value="playball" />打球
    <input type="checkbox" name="hobby" value="swim"/>游泳
    <input type="checkbox" name="hobby" value="read"/>读书 <br/>
    <button onclick="checkAll()">全选</button>
    <button onclick="checkNO()">清空</button>
    <button onclick="reverse()">反选</button>
</body>
</html>

效果:
在这里插入图片描述
使用document.getElementsByTagName 方法,通过标签名获得标签对象的数组,操作与上面的document.getElementsByName类似。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function checkAll() {
            //getElementsByTagName 方法获得的是标签对象的数组
            //数组顺序按照顺序排序
            var inputObj = document.getElementsByTagName("input");
            for(var i=0;i < inputObj.length;i++){
                inputObj[i].checked = true;
            }
        }
        </script>
</head>
<body>
    <input type="checkbox"   value="playball" />打球
    <input type="checkbox"  value="swim"/>游泳
    <input type="checkbox"  value="read"/>读书 <br/>
    <button onclick="checkAll()">全选</button>

</body>
</html>

这三种查询方法,优先使用id属性的查询方法。其次使用getElementsByName方法,最后使用getElementsByTagName方法。

使用createElement 方法创建标签对象,并使用appendChild方法显示在body里。
在这里插入图片描述

【最优潮流】直流最优潮流(OPF)课设(Matlab代码实现)内容概要:本文档主要围绕“直流最优潮流(OPF)课设”的Matlab代码实现展开,属于电力系统优化领域的教学与科研实践内容。文档介绍了通过Matlab进行电力系统最优潮流计算的基本原理与编程实现方法,重点聚焦于直流最优潮流模型的构建与求解过程,适用于课程设计或科研入门实践。文中提及使用YALMIP等优化工具包进行建模,并提供了相关资源下载链接,便于读者复现与学习。此外,文档还列举了大量与电力系统、智能优化算法、机器学习、路径规划等相关的Matlab仿真案例,体现出其服务于科研仿真辅导的综合性平台性质。; 适合人群:电气工程、自动化、电力系统及相关专业的本科生、研究生,以及从事电力系统优化、智能算法应用研究的科研人员。; 使用场景及目标:①掌握直流最优潮流的基本原理与Matlab实现方法;②完成课程设计或科研项目中的电力系统优化任务;③借助提供的丰富案例资源,拓展在智能优化、状态估计、微电网调度等方向的研究思路与技术手段。; 阅读建议:建议读者结合文档中提供的网盘资源,下载完整代码与工具包,边学习理论边动手实践。重点关注YALMIP工具的使用方法,并通过复现文中提到的多个案例,加深对电力系统优化问题建模与求解的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值