第三章:JavaScript 脚本语言(二)

news2024/11/23 3:02:21

 最近发生了好多事情。

一、String对象

String对象是动态对象,需要创建实例后才可以引用其方法与属性。在js中也可以直接使用单引号或者双引号来直接创建实例化的对象。

  • anchor(name)         为字符串对象内容两边加上html<a name = name></a>标记对
  • big()                        为字符串对象内容两边加上html<big></big>标记对
  • bold()                       为字符串对象内容两边加上html<b></b>标记对
  • indexOf()                 返回string对象内第一次出现子字符串的字符位置,若未找到返回-1
  • substr()                   返回一个指定字符串的子串
  • split()                        将字符串分割为字符串数组

 replace()                  参数为(regExp,substing)用于替换一个与正则表达式匹配的子串,

                                  regExp参数为一个正则表达式,如果正则表达式中设置了标志g,则替换所有匹配到了子串,否则只替换一个。

substing是生成替换文本的函数,在substring中“$”具有特殊含义。

 实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
<!--area of css-->
    <style>
        label{
            width: 150px;
            text-align: left;
            display: inline-block;
        }
        textarea{
            background-color: rgba(241,241,241,.98);    /*修改框内颜色*/
            
        }
    </style>
<!--area of css-->
</head>
<body>
<form name="form1" method="post" action="">
    <label >原字符串</label>
    <textarea name="oldString" cols="40" rows="4"></textarea>
    <br>
    <label> 转换后的字符串</label>
    <textarea name="newString" cols="40" rows="4"></textarea>
    <br>
    <input name="Button" type="button" class="btn_grey" value="去掉字符串的首尾空格" onclick = "trim()">
    <input name="Reset_Button" type="reset" class="btn_reset" value="清空文本区域">
</form>
<script type="text/javascript">
    function trim()
    {
        let str = form1.oldString.value;//从表单中获取原字符串
        if(str=="")
        {
            alert("请输入字符串:");
            form1.oldString.focus();
            return ;
        }
        else
        {
            let objExp = /(^\s*)|(\s*$)/g;//正则表达式
            str = str.replace(objExp,"");
        }
        form1.newString.value = str;//将转换后的值赋给form1表单中的newString

    }
</script>
</body>
</html>

二、Date对象

 Date对象是一个有关时间与日期的对象,具有动态性,需要结合new操作符实例化对象

year、month、date、hours、mintues、secdons、ms下标从0开始

Date对象没有直接访问的属性,只有获取、设置日期的时间的函数

  •  getFullYear()
  • getMonth()
  • getDate()
  • getDay()
  • getHours()

 实例:显示当前日期时间

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h4 id="clock"></h4>
<style>
  h4{
    height:28px;
    width:240px;
    border: solid 2px;
    background-color: rgba(241,241,241,.98);
    text-align: center;
  }
</style>
<script type="text/javascript">
  function realSysTime(clock)
  {
    let now = new Date();
    let year = now.getFullYear();
    let month = now.getMonth();
    let date = now.getDate();
    let day = now.getDay();
    let hours = now.getHours();
    let min = now.getMinutes();
    let sec = now.getSeconds();
    month+=1;
    let arr_week = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
    let week = arr_week[day];
    let time = year+"年"+month+"月"+day+"日"+hours+":"+min+":"+sec;
    clock.innerHTML = "当前时间"+time;
  }
  //使用setInterval每1秒调用一次
  window.onload = function (){
    window.setInterval("realSysTime(clock)",1000);
  }
</script>
</body>
</html>

 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

 三、DOM技术

DOM是Document Object Model(文件对象模型)的简称,是表示文档和访问、操作构成文档的各种元素的API。

HTML DOM 定义了访问和操作 HTML 文档的标准方法。

 一、DOM的分层结构

DOM树的根接结点是一个Document对象,该对象documentElement属性引用表示文档根元素的Element元素,HTML文档表示根元素的element对象是<html>标记,<head>和<body>元素是树的枝干。

即对html文档进行documentElement属性引用即为<html>标记。

以以下实例说明:

<html>
<head>
    <title>我的第一个HTML文档</title>
</head>
<body>
    欢迎访问我的网站
    <br>
    <a href="https://www.myself.com">https://www.myself.com</a>
</body>
</html>

 Document对象层次结构如下:

 其明显为树形结构,具有明显的包含关系与层次关系。

二、遍历文档

在DOM中,html文档中的各个节点被视为各种类型的Node对象,并且将html文档表示为Node对象的树。可通过Node对象的parentNode、firstChild、nextChild等属性来遍历树。

Node对象的属性如下:

 实例:遍历jsp文档,获取该文档中的全部标记及标记总数

<%@ page language="java" pageEncoding="GBK" %>
<html>
<head>
    <title>一个简单的文档</title>
</head>
    <body onclick="show()">
<%--onclick为载入事件--%>
        欢迎访问我的网站
        <br>
        <a href="www.myself.com">https://www.myself.com</a>
    <script type="text/javascript">
        let elementList = "";//保存element标记名
        //递归访问文档中的所有标记
        function getElement(node)
        {
            let total = 0;
            if(node.nodeType==1)//如果node是element对象,即nodeType==1
            {
                total++;
                elementList =  elementList+node.nodeName+"、"
            }
            let childrens = node.childNodes;//获取node结点的子结点
            //for循环取每个父结点再递归
            for(let m = node.firstChild;m!=null;m = m.nextSibling)
                total+=getElement(m);
            return total;

        }
        function show()
        {
            let number = getElement(document);//获取标记总数
            elementList = elementList.substring(0,elementList.length-1);
            window.alert("文档中包含:"+elementList+"等"+number+"个标记!");
            elementList = "";//清空elementList
            
        }
    </script>
    </body>
</html>

说明:在这段js程序中主要获取html文档中全部的标记。因为每一个节点都是个node对象,使用node.nodeType==1可以用来判断该节点是不是标记名,使用递归来统计每一个节点是不是标记,若是则加入到列表中且total++。

三、获取文档中的指定元素

1、通过元素ID属性来获取元素

document.getElementById(" id_value");

 2、通过元素的name属性获取元素

document.getElementsByName("username");

该方法返回的是一个数组,若要获取到页面中唯一的元素,通过返回数组中下标值为0的元素进行获取,即为document.getElementsByName("username")[0];

 getElementsByName() 方法返回拥有指定名称的元素集合。

 四、操作文档

同其他语言,DOM可对结点进行创建、插入、删除、替换等操作。即通过对Node对象操作来达到目的。

  实例:实现一个评论区的基本功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DOM技术的实例</title>
</head>
<body>
<table id="comment">
  <style>
    #comment{
      width: 600px;
      align-content: center;
      cellpadding:0;
      border: 1px white;
      border-right-color: #666666;
      table-border-color-dark: white;
    }
  </style>
  <tr style="width: 18%; height:27px; align-content: center; background-color: #E5BB93">评论人</tr>
  <tr style="width: 82%; align-content: center; background-color: #E5BB93">评论内容</tr>
</table>
<form name="form1" method="post" action="">
  评 论 人:<input name="person" type="text" id="person" size="40" style="text-align: left">
  <br>
  评论内容:<textarea name="content" cols="60" rows="6" id="content" style="text-align: left"></textarea>
</form>
<input name="Button" type="button" class="btn_grey" value="发表" onclick="addElement()">
<input name="Reset" type="reset" class="btn_grey" value="重置">
<input name="Button" type="button" class="btn_grey" value="删除第一条评论" onclick="deleteFirstE()">
<input name="Button" type="button" class="btn_grey" value="删除最后一条评论" onclick="deleteLastE()">
<script>
    //增加评论
    function addElement()
    //总题思路:先创建input结点,再创建table元素,最后再追加
    {
        let penson = document.createTextNode(form1.person.value);//创建评论人的textNode结点
        let content = document.createTextNode(form1.content.value);//创建评论内容的textNode结点
        //当评论为空时无法评论
        if (form1.person.value=="" || form1.content.value=="")
            return ;
        //创建td类型的Element结点
        //td为table中的标准单元格
        //tr为table中的行
        let td_perpon = document.createElement("td");
        let td_centent = document.createElement("td");
        let tableRowElement = document.createElement("tr");
        let tbody = document.createElement("tbody");
        //将textNode结点加入到table中,即将textNode结点加入到td中
        td_perpon.appendChild(penson);
        td_centent.append(content);
        //再将td类型的结点添加到tr结点中
        tableRowElement.appendChild(td_perpon);
        tableRowElement.appendChild(td_centent);
        tbody.appendChild(tableRowElement);//此时再将整个tr表加入到tbody中
        let table_Comment = document.getElementById("comment");
        //将tbody再追加到table尾部
        table_Comment.appendChild(tbody);
        //清空文本域
        form1.person.value = "";
        form1.content.value = "";

    }
    //删除第一条评论
    function deleteFirstE(){
        let tComment = document.getElementById("comment");
        if(tComment.rows.length>1)//
        {
            //删除表格第二行,即第一条评论
            tComment.deleteRow(1);
        }
    }
    //删除最后一个评论
    function deleteLastE()
    {
        let tComment = document.getElementById("comment");
        if(tComment.rows.length>1)//
        {
            //删除表格第二行,即第一条评论
            tComment.deleteRow(tComment.rows.length-1);
        }
    }
</script>
</body>
</html>

//这个对html考察较大,需要仔细分析

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

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

相关文章

【网络】网络基础入门

文章目录 局域网和广域网协议协议概念协议分层数据传输条件 OSI七层模型&#xff08;了解&#xff09;TCP/IP五层&#xff08;四层&#xff09;模型网络传输基本流程报头局域网通信原理以太网(了解)网络传输流程图数据包封装和分用 六、IP与MAC地址 局域网和广域网 独立模式: …

springboot+vue垃圾分类网站(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的垃圾分类网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

苹果备忘录误删了怎么恢复?恢复备忘录的3个方法!

案例&#xff1a;苹果删除的备忘录怎么恢复&#xff1f; 【友友们&#xff0c;苹果备忘录删除的备忘录在哪里可以恢复&#xff1f;有什么方法吗&#xff1f;】 苹果备忘录是日常生活中经常使用的一种记录方式&#xff0c;它可以帮助我们记录生活琐事、工作事项以及其他需要记录…

自动驾驶行业观察之2023上海车展-----车企发展趋势(3)

合资\外资发展 宝马&#xff1a;i7、iX1新车亮相&#xff0c;未来将持续发力电动化、数字化&#xff08;座舱&#xff09; 宝马在本次车展重点展示了电动化产品&#xff0c;新发车型为i7 M70L、iX1、及i vision Dee概念车等车型。 • 展示重点&#xff1a;电动化数字化&…

C/C++每日一练(20230505) 扩展兔子数列、删除重复项、寻找最小值

目录 1. 求尾数与常数之和 &#x1f31f; 2. 删除有序数组中的重复项 &#x1f31f; 3. 寻找旋转排序数组中的最小值 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日…

Selenium原理以及Python从零实现

Selenium简介 Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google Chrome&a…

使用zabbix监控Windows指定服务| zabbix Windows service filter

环境&#xff1a;Centos Zabbix6 问题&#xff1a;使用自带的windows服务监控带出了所有的服务&#xff0c;只想监控特定的服务 解决办法&#xff1a;使用正则表达式过滤 背景&#xff1a;在Zabbix6中&#xff0c;使用自带的windows服务监控带出了所有的服务&#xff0c;只想监…

数据分析如何入门?这4类 Excel 函数助你从小白到大神

Excel是我们从事数据分析的朋友们&#xff0c;会经常用到的最基本的工具。而Excel函数又是Excel中最为重要的、最为常用的知识点&#xff0c;我们必须要掌握。 基于此&#xff0c;今天就分类为大家讲述最为常用的Excel函数。 逻辑函数 1、and 2、or 3、if 当使用了if(…

Leetcode326. 3 的幂

Every day a leetcode 题目来源&#xff1a;326. 3 的幂 相似题目&#xff1a;342. 4的幂 解法1&#xff1a;递归 代码&#xff1a; /** lc appleetcode.cn id326 langcpp** [326] 3 的幂*/// lc codestart class Solution { public:bool isPowerOfThree(int n){if (n <…

【软考高项笔记】第1章 信息化发展1.4 数字中国

1.4 数字中国 我国信息化发展的主旋律 迎接数据时代&#xff0c;激活数据要素的潜能&#xff0c;推进网络强国建设&#xff0c;加快建设数据经济、数据社会、数据政府、以数字化转型整体驱动生产方式&#xff0c;生活方式和治理方式变革1.4.1 数字经济 新技术经济范式&#xf…

港联证券|人工智能走高,掌阅科技三连板,海天瑞声等大幅拉升

人工智能概念5日盘中发力走高&#xff0c;截至发稿&#xff0c;光云科技“20cm”涨停&#xff0c;彩讯股份、云从科技涨超13%&#xff0c;汉王科技、焦点科技、掌阅科技、竞业达等涨停&#xff0c;世纪天鸿、海天瑞声涨超8%。 值得注意的是&#xff0c;掌阅科技已接连三个交易日…

BM5 合并k个已排序链表

合并k个已排序的链表_牛客题霸_牛客网 (nowcoder.com) class Solution {public://两个有序链表合并函数ListNode* Merge2(ListNode* pHead1, ListNode* pHead2) {if(!pHead1) return pHead2;if(!pHead2) return pHead1;if(pHead1->val < pHead2->val){pHead1->next…

Linux搭建我的世界服务器 + 公网远程联机教程「不需要公网IP」

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 转载自内…

Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接

目录 前言 1. 配置Mongodb源 2. 安装MongoDB 3. 局域网连接测试 4. 安装cpolar内网穿透 5. 配置公网访问地址 6. 公网远程连接 7. 固定连接公网地址 8. 使用固定地址连接 转载自Cpolar Lisa文章&#xff1a;Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网…

IP库新增10多个功能IP

本文涵盖了从初学者到专家级别的FPGA 项目及IP。所有 FPGA 项目都带有开源的源代码。 IP库简介 一直想做一个可以供大家学习、使用的开源IP库&#xff0c;类似OpenCores&#xff0c;OC上IP在领域内的IP很少&#xff0c;通用性强一点&#xff0c;所以作为OC的“补充”&#xff0…

[架构之路-182]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 概览

前言&#xff1a; 可靠性工程是研究产品生命周期中故障的发生、发展规律&#xff0c;达到预防故障&#xff0c;消灭故 障&#xff0c;提高产品可用性的工程技术。 信息系统的可靠性是指系统在满足一定条件的应用环境中能够正常工作的能力&#xff0c;可以按一般工程系统的可靠性…

【KVM虚拟化】· virsh管理命令

目录 &#x1f341;libvirt架构概述 &#x1f341;使用virsh管理虚拟机 &#x1f342;常用命令总结 &#x1f341;kvm基本功能管理 &#x1f342;帮助命令 &#x1f342;KVM的配置文件存放目录 &#x1f342;查看虚拟机状态 &#x1f342;虚拟机关机与开机 &#x1f342;强制虚…

GUI编程(一)

1、简介 GUI的核心技术&#xff1a;Swing、 AWT 1、外观不太美观&#xff0c;组件数量偏少 2、运行需要JRE环境 为什么我们要学习&#xff1f; 组件(JTable,JList等)很多都是MVC的经典示范&#xff0c;学习也可以了解mvc架构。工作时,也有可能遇见需要维护N年前awt/swing写的…

360SEO 如何使用360分析工具来了解你的受众

随着数字化时代的到来&#xff0c;越来越多的企业和个人开始关注自己的受众&#xff0c;以便更好地满足他们的需求。在这个过程中&#xff0c;数据分析工具发挥了越来越重要的作用。其中&#xff0c;360分析工具是一种非常受欢迎的工具&#xff0c;它可以帮助你了解你的受众。 …

Linux Shell编程面试题

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…