• java学习day41(JavaWeb)JavaScript高级


    今日重点:

    1. JavaScript:
        1. ECMAScript:
        2. BOM:
        3. DOM:
            1. 事件

    DOM简单学习:为了满足案例要求

    * 功能:控制html文档的内容
    * 获取页面标签(元素)对象:Element
        * document.getElementById("id值"):通过元素的id获取元素对象

    * 操作Element对象:
        1. 修改属性值:
            1. 明确获取的对象是哪一个?
            2. 查看API文档,找其中有哪些属性可以设置
        2. 修改标签体内容:
            * 属性:innerHTML
            1. 获取元素对象
            2. 使用innerHTML属性修改标签体内容

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. head>
    7. <body>
    8. <img id="light" src="img/off.gif">
    9. <h1 id="title">悔创阿里杰克马h1>
    10. <script>
    11. //通过id获取元素对象
    12. var light = document.getElementById("light");
    13. alert("我要换图片了。。。");
    14. light.src = "img/on.gif";
    15. /* //1.获取h1标签对象
    16. var title = document.getElementById("title");
    17. alert("我要换内容了。。。");
    18. //2.修改内容
    19. title.innerHTML = "不识妻美刘强东";*/
    20. script>
    21. body>
    22. html>

    事件简单学习

    * 功能: 某些组件被执行了某些操作后,触发某些代码的执行。
        * 造句:  xxx被xxx,我就xxx
            * 我方水晶被摧毁后,我就责备对友。
            * 敌方水晶被摧毁后,我就夸奖自己。

    * 如何绑定事件
        1. 直接在html标签上,指定事件的属性(操作),属性值就是js代码
            1. 事件:onclick--- 单击事件

        2. 通过js获取元素对象,指定事件属性,设置一个函数

    1. * 代码:
    2. <body>
    3. <img id="light" src="img/off.gif" onclick="fun();">
    4. <img id="light2" src="img/off.gif">
    5. <script>
    6. function fun(){
    7. alert('我被点了');
    8. alert('我又被点了');
    9. }
    10. function fun2(){
    11. alert('咋老点我?');
    12. }
    13. //1.获取light2对象
    14. var light2 = document.getElementById("light2");
    15. //2.绑定事件
    16. light2.onclick = fun2;
    17. script>
    18. body>

    * 案例1:电灯开关

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>电灯开关title>
    6. head>
    7. <body>
    8. <img id="light" src="img/off.gif">
    9. <script>
    10. /*
    11. 分析:
    12. 1.获取图片对象
    13. 2.绑定单击事件
    14. 3.每次点击切换图片
    15. * 规则:
    16. * 如果灯是开的 on,切换图片为 off
    17. * 如果灯是关的 off,切换图片为 on
    18. * 使用标记flag来完成
    19. */
    20. //1.获取图片对象
    21. var light = document.getElementById("light");
    22. var flag = false;//代表灯是灭的。 off图片
    23. //2.绑定单击事件
    24. light.onclick = function(){
    25. if(flag){//判断如果灯是开的,则灭掉
    26. light.src = "img/off.gif";
    27. flag = false;
    28. }else{
    29. //如果灯是灭的,则打开
    30. light.src = "img/on.gif";
    31. flag = true;
    32. }
    33. }
    34. script>
    35. body>
    36. html>

    BOM:

    1. 概念:Browser Object Model 浏览器对象模型
        * 将浏览器的各个组成部分封装成对象。

    2. 组成:
        * Window:窗口对象
        * Navigator:浏览器对象
        * Screen:显示器屏幕对象
        * History:历史记录对象
        * Location:地址栏对象

    3. Window:窗口对象
        1. 创建
        2. 方法
             1. 与弹出框有关的方法:
                alert()    显示带有一段消息和一个确认按钮的警告框。
                confirm()    显示带有一段消息以及确认按钮和取消按钮的对话框。
                    * 如果用户点击确定按钮,则方法返回true
                    * 如果用户点击取消按钮,则方法返回false
                prompt()    显示可提示用户输入的对话框。
                    * 返回值:获取用户输入的值
             2. 与打开关闭有关的方法:
                close()    关闭浏览器窗口。
                    * 谁调用我 ,我关谁
                open()    打开一个新的浏览器窗口
                    * 返回新的Window对象
             3. 与定时器有关的方式
                setTimeout()    在指定的毫秒数后调用函数或计算表达式。
                    * 参数:
                        1. js代码或者方法对象
                        2. 毫秒值
                    * 返回值:唯一标识,用于取消定时器
                clearTimeout()    取消由 setTimeout() 方法设置的 timeout。

                setInterval()    按照指定的周期(以毫秒计)来调用函数或计算表达式。
                clearInterval()    取消由 setInterval() 设置的 timeout。

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Window对象title>
    6. head>
    7. <body>
    8. <input id="openBtn" type="button" value="打开窗口">
    9. <input id="closeBtn" type="button" value="关闭窗口">
    10. <script>
    11. /*alert("hello window");
    12. window.alert("hello a")*/
    13. /*
    14. //确认框
    15. var flag = confirm("您确定要退出吗?");
    16. if(flag){
    17. //退出操作
    18. alert("欢迎再次光临!");
    19. }else{
    20. //提示:手别抖...
    21. alert("手别抖...");
    22. }*/
    23. /*
    24. //输入框
    25. var result = prompt("请输入用户名");
    26. alert(result);
    27. */
    28. /* //打开新窗口
    29. var openBtn = document.getElementById("openBtn");
    30. var newWindow;
    31. openBtn.onclick = function(){
    32. //打开新窗口
    33. newWindow = open("https://www.baidu.com");
    34. }
    35. //关闭新窗口
    36. var closeBtn = document.getElementById("closeBtn");
    37. closeBtn.onclick = function(){
    38. // 关闭新窗口
    39. newWindow.close();
    40. }*/
    41. //一次性定时器
    42. //setTimeout("fun();",2000);
    43. //var id = setTimeout(fun,2000);
    44. //clearTimeout(id);
    45. /* function fun(){
    46. alert('boom~~');
    47. }
    48. //循环定时器
    49. var id = setInterval(fun,2000);
    50. clearInterval(id);
    51. */
    52. /* //获取history
    53. var h1 = window.history;
    54. var h2 = history;
    55. alert(h1);
    56. alert(h2);
    57. */
    58. var openBtn = window.document.getElementById("openBtn");
    59. alert(openBtn);
    60. /*document.getElementById("");*/
    61. script>
    62. body>
    63. html>

     轮播图示例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>轮播图title>
    6. head>
    7. <body>
    8. <img id="img" src="img/banner_1.jpg" width="100%">
    9. <script>
    10. /*
    11. 分析:
    12. 1.在页面上使用img标签展示图片
    13. 2.定义一个方法,修改图片对象的src属性
    14. 3.定义一个定时器,每隔3秒调用方法一次。
    15. */
    16. //修改图片src属性
    17. var number = 1;
    18. function fun(){
    19. number ++ ;
    20. //判断number是否大于3
    21. if(number > 3){
    22. number = 1;
    23. }
    24. //获取img对象
    25. var img = document.getElementById("img");
    26. img.src = "img/banner_"+number+".jpg";
    27. }
    28. //2.定义定时器
    29. setInterval(fun,3000);
    30. script>
    31. body>
    32. html>

    3. 属性:
            1. 获取其他BOM对象:
                history
                location
                Navigator
                Screen:
            2. 获取DOM对象
                document
        4. 特点
            * Window对象不需要创建可以直接使用 window使用。 window.方法名();
            * window引用可以省略。  方法名();

    4. Location:地址栏对象
        1. 创建(获取):
            1. window.location
            2. location

        2. 方法:
            * reload()    重新加载当前文档。刷新
        3. 属性
            * href    设置或返回完整的 URL。

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Location对象title>
    6. head>
    7. <body>
    8. <input type="button" id="btn" value="刷新">
    9. <input type="button" id="goItcast" value="去传智">
    10. <script>
    11. //reload方法,定义一个按钮,点击按钮,刷新当前页面
    12. //1.获取按钮
    13. var btn = document.getElementById("btn");
    14. //2.绑定单击事件
    15. btn.onclick = function(){
    16. //3.刷新页面
    17. location.reload();
    18. }
    19. //获取href
    20. var href = location.href ;
    21. //alert(href);
    22. //点击按钮,去访问www.itcast.cn官网
    23. //1.获取按钮
    24. var goItcast = document.getElementById("goItcast");
    25. //2.绑定单击事件
    26. goItcast.onclick = function(){
    27. //3.去访问www.itcast.cn官网
    28. location.href = "https://www.baidu.com";
    29. }
    30. script>
    31. body>
    32. html>

    自动跳转案例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>自动跳转title>
    6. <style>
    7. p{
    8. text-align: center;
    9. }
    10. span{
    11. color:red;
    12. }
    13. style>
    14. head>
    15. <body>
    16. <p>
    17. <span id="time">5span>秒之后,自动跳转到首页...
    18. p>
    19. <script>
    20. /*
    21. 分析:
    22. 1.显示页面效果

    23. 2.倒计时读秒效果实现
    24. 2.1 定义一个方法,获取span标签,修改span标签体内容,时间--
    25. 2.2 定义一个定时器,1秒执行一次该方法
    26. 3.在方法中判断时间如果<= 0 ,则跳转到首页
    27. */
    28. // 2.倒计时读秒效果实现
    29. var second = 5;
    30. var time = document.getElementById("time");
    31. //定义一个方法,获取span标签,修改span标签体内容,时间--
    32. function showTime(){
    33. second -- ;
    34. //判断时间如果<= 0 ,则跳转到首页
    35. if(second <= 0){
    36. //跳转到首页
    37. location.href = "https://www.baidu.com";
    38. }
    39. time.innerHTML = second +"";
    40. }
    41. //设置定时器,1秒执行一次该方法
    42. setInterval(showTime,1000);
    43. script>
    44. body>
    45. html>

    5. History:历史记录对象
        1. 创建(获取):
            1. window.history
            2. history

        2. 方法:
            * back()    加载 history 列表中的前一个 URL。
            * forward()    加载 history 列表中的下一个 URL。
            * go(参数)    加载 history 列表中的某个具体页面。
                * 参数:
                    * 正数:前进几个历史记录
                    * 负数:后退几个历史记录
        3. 属性:
            * length    返回当前窗口历史列表中的 URL 数量。

    示例代码:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>History对象title>
    6. head>
    7. <body>
    8. <input type="button" id="btn" value="获取历史记录个数">
    9. <a href="09_History对象2.html">09页面a>
    10. <input type="button" id="forward" value="前进">
    11. <script>
    12. /*
    13. History:历史记录对象
    14. 1. 创建(获取):
    15. 1. window.history
    16. 2. history
    17. 2. 方法:
    18. * back() 加载 history 列表中的前一个 URL。
    19. * forward() 加载 history 列表中的下一个 URL。
    20. * go(参数) 加载 history 列表中的某个具体页面。
    21. * 参数:
    22. * 正数:前进几个历史记录
    23. * 负数:后退几个历史记录
    24. 3. 属性:
    25. * length 返回当前窗口历史列表中的 URL 数量。
    26. */
    27. //1.获取按钮
    28. var btn = document.getElementById("btn");
    29. //2.绑定单机事件
    30. btn.onclick = function(){
    31. //3.获取当前窗口历史记录个数
    32. var length = history.length;
    33. alert(length);
    34. }
    35. //1.获取按钮
    36. var forward = document.getElementById("forward");
    37. //2.绑定单机事件
    38. forward.onclick = function(){
    39. //前进
    40. // history.forward();
    41. history.go(1);
    42. }
    43. script>
    44. body>
    45. html>

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>轮播图title>
    6. head>
    7. <body>
    8. <img id="img" src="img/banner_1.jpg" width="100%">
    9. <input type="button" id="back" value="后退">
    10. <script>
    11. /*
    12. 分析:
    13. 1.在页面上使用img标签展示图片
    14. 2.定义一个方法,修改图片对象的src属性
    15. 3.定义一个定时器,每隔3秒调用方法一次。
    16. */
    17. //修改图片src属性
    18. var number = 1;
    19. function fun(){
    20. number ++ ;
    21. //判断number是否大于3
    22. if(number > 3){
    23. number = 1;
    24. }
    25. //获取img对象
    26. var img = document.getElementById("img");
    27. img.src = "img/banner_"+number+".jpg";
    28. }
    29. //2.定义定时器
    30. setInterval(fun,3000);
    31. //1.获取按钮
    32. var back = document.getElementById("back");
    33. //2.绑定单机事件
    34. back.onclick = function(){
    35. //后退
    36. // history.back();
    37. history.go(-1);
    38. }
    39. script>
    40. body>
    41. html>

    DOM:

    * 概念: Document Object Model 文档对象模型
        * 将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作

    * W3C DOM 标准被分为 3 个不同的部分:

        * 核心 DOM - 针对任何结构化文档的标准模型
            * Document:文档对象
            * Element:元素对象
            * Attribute:属性对象
            * Text:文本对象
            * Comment:注释对象

            * Node:节点对象,其他5个的父对象
        * XML DOM - 针对 XML 文档的标准模型
        * HTML DOM - 针对 HTML 文档的标准模型

    * 核心DOM模型:
        * Document:文档对象
            1. 创建(获取):在html dom模型中可以使用window对象来获取
                1. window.document
                2. document
            2. 方法:
                1. 获取Element对象:
                    1. getElementById()    : 根据id属性值获取元素对象。id属性值一般唯一
                    2. getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组
                    3. getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组
                    4. getElementsByName(): 根据name属性值获取元素对象们。返回值是一个数组
                2. 创建其他DOM对象:
                    createAttribute(name)
                    createComment()
                    createElement()
                    createTextNode()

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Document对象title>
    6. head>
    7. <body>
    8. <div id="div1">div1div>
    9. <div id="div2">div2div>
    10. <div id="div3">div3div>
    11. <div class="cls1">div4div>
    12. <div class="cls1">div5div>
    13. <input type="text" name="username">
    14. <script>
    15. //2.根据元素名称获取元素对象们。返回值是一个数组
    16. var divs = document.getElementsByTagName("div");
    17. //alert(divs.length);
    18. //3.根据Class属性值获取元素对象们。返回值是一个数组
    19. var div_cls = document.getElementsByClassName("cls1");
    20. // alert(div_cls.length);
    21. //4.根据name属性值获取元素对象们。返回值是一个数组
    22. var ele_username = document.getElementsByName("username");
    23. //alert(ele_username.length);
    24. var table = document.createElement("table");
    25. alert(table);
    26. script>
    27. body>
    28. html>

           3. 属性
        * Element:元素对象
            1. 获取/创建:通过document来获取和创建
            2. 方法:
                1. removeAttribute():删除属性
                2. setAttribute():设置属性

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Element对象title>
    6. head>
    7. <body>
    8. <a>点我试一试a>
    9. <input type="button" id="btn_set" value="设置属性">
    10. <input type="button" id="btn_remove" value="删除属性">
    11. <script>
    12. //获取btn
    13. var btn_set =document.getElementById("btn_set");
    14. btn_set.onclick = function(){
    15. //1.获取a标签
    16. var element_a = document.getElementsByTagName("a")[0];
    17. element_a.setAttribute("href","https://www.baidu.com");
    18. }
    19. //获取btn
    20. var btn_remove =document.getElementById("btn_remove");
    21. btn_remove.onclick = function(){
    22. //1.获取a标签
    23. var element_a = document.getElementsByTagName("a")[0];
    24. element_a.removeAttribute("href");
    25. }
    26. script>
    27. body>
    28. html>

        * Node:节点对象,其他5个的父对象
            * 特点:所有dom对象都可以被认为是一个节点
            * 方法:
                * CRUD dom树:
                    * appendChild():向节点的子节点列表的结尾添加新的子节点。
                    * removeChild()    :删除(并返回)当前节点的指定子节点。
                    * replaceChild():用新节点替换一个子节点。
            * 属性:
                * parentNode 返回节点的父节点。

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Node对象title>
    6. <style>
    7. div{
    8. border: 1px solid red;
    9. }
    10. #div1{
    11. width: 200px;
    12. height: 200px;
    13. }
    14. #div2{
    15. width: 100px;
    16. height: 100px;
    17. }
    18. #div3{
    19. width: 100px;
    20. height: 100px;
    21. }
    22. style>
    23. head>
    24. <body>
    25. <div id="div1">
    26. <div id="div2">div2div>
    27. div1
    28. div>
    29. <a href="javascript:void(0);" id="del">删除子节点a>
    30. <a href="javascript:void(0);" id="add">添加子节点a>
    31. <script>
    32. //1.获取超链接
    33. var element_a = document.getElementById("del");
    34. //2.绑定单击事件
    35. element_a.onclick = function(){
    36. var div1 = document.getElementById("div1");
    37. var div2 = document.getElementById("div2");
    38. div1.removeChild(div2);
    39. }
    40. //1.获取超链接
    41. var element_add = document.getElementById("add");
    42. //2.绑定单击事件
    43. element_add.onclick = function(){
    44. var div1 = document.getElementById("div1");
    45. //给div1添加子节点
    46. //创建div节点
    47. var div3 = document.createElement("div");
    48. div3.setAttribute("id","div3");
    49. div1.appendChild(div3);
    50. }
    51. /*
    52. 超链接功能:
    53. 1.可以被点击:样式
    54. 2.点击后跳转到href指定的url
    55. 需求:保留1功能,去掉2功能
    56. 实现:href="javascript:void(0);"
    57. */
    58. var div2 = document.getElementById("div2");
    59. var div1 = div2.parentNode;
    60. alert(div1);
    61. script>
    62. body>
    63. html>

    动态表格案例:

    需求示例:

    原始代码:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>动态表格title>
    6. <style>
    7. table{
    8. border: 1px solid;
    9. margin: auto;
    10. width: 500px;
    11. }
    12. td,th{
    13. text-align: center;
    14. border: 1px solid;
    15. }
    16. div{
    17. text-align: center;
    18. margin: 50px;
    19. }
    20. style>
    21. head>
    22. <body>
    23. <div>
    24. <input type="text" id="id" placeholder="请输入编号">
    25. <input type="text" id="name" placeholder="请输入姓名">
    26. <input type="text" id="gender" placeholder="请输入性别">
    27. <input type="button" value="添加" id="btn_add">
    28. div>
    29. <table>
    30. <caption>学生信息表caption>
    31. <tr>
    32. <th>编号th>
    33. <th>姓名th>
    34. <th>性别th>
    35. <th>操作th>
    36. tr>
    37. <tr>
    38. <td>1td>
    39. <td>令狐冲td>
    40. <td>td>
    41. <td><a href="">删除a>td>
    42. tr>
    43. <tr>
    44. <td>2td>
    45. <td>任我行td>
    46. <td>td>
    47. <td><a href="">删除a>td>
    48. tr>
    49. <tr>
    50. <td>3td>
    51. <td>岳不群td>
    52. <td>?td>
    53. <td><a href="">删除a>td>
    54. tr>
    55. table>
    56. body>
    57. html>

     实现代码:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>动态表格title>
    6. <style>
    7. table{
    8. border: 1px solid;
    9. margin: auto;
    10. width: 500px;
    11. }
    12. td,th{
    13. text-align: center;
    14. border: 1px solid;
    15. }
    16. div{
    17. text-align: center;
    18. margin: 50px;
    19. }
    20. style>
    21. head>
    22. <body>
    23. <div>
    24. <input type="text" id="id" placeholder="请输入编号">
    25. <input type="text" id="name" placeholder="请输入姓名">
    26. <input type="text" id="gender" placeholder="请输入性别">
    27. <input type="button" value="添加" id="btn_add">
    28. div>
    29. <table>
    30. <caption>学生信息表caption>
    31. <tr>
    32. <th>编号th>
    33. <th>姓名th>
    34. <th>性别th>
    35. <th>操作th>
    36. tr>
    37. <tr>
    38. <td>1td>
    39. <td>令狐冲td>
    40. <td>td>
    41. <td><a href="javascript:void(0);" onclick="delTr(this);">删除a>td>
    42. tr>
    43. <tr>
    44. <td>2td>
    45. <td>任我行td>
    46. <td>td>
    47. <td><a href="javascript:void(0);" onclick="delTr(this);">删除a>td>
    48. tr>
    49. <tr>
    50. <td>3td>
    51. <td>岳不群td>
    52. <td>?td>
    53. <td><a href="javascript:void(0);" onclick="delTr(this);" >删除a>td>
    54. tr>
    55. table>
    56. <script>
    57. /*
    58. 分析:
    59. 1.添加:
    60. 1. 给添加按钮绑定单击事件
    61. 2. 获取文本框的内容
    62. 3. 创建td,设置td的文本为文本框的内容。
    63. 4. 创建tr
    64. 5. 将td添加到tr中
    65. 6. 获取table,将tr添加到table中
    66. 2.删除:
    67. 1.确定点击的是哪一个超链接
    68. 2.怎么删除?
    69. removeChild():通过父节点删除子节点
    70. */
    71. //1.获取按钮
    72. document.getElementById("btn_add").onclick = function(){
    73. //2.获取文本框的内容
    74. var id = document.getElementById("id").value;
    75. var name = document.getElementById("name").value;
    76. var gender = document.getElementById("gender").value;
    77. //3.创建td,赋值td的标签体
    78. //id 的 td
    79. var td_id = document.createElement("td");
    80. var text_id = document.createTextNode(id);
    81. td_id.appendChild(text_id);
    82. //name 的 td
    83. var td_name = document.createElement("td");
    84. var text_name = document.createTextNode(name);
    85. td_name.appendChild(text_name);
    86. //gender 的 td
    87. var td_gender = document.createElement("td");
    88. var text_gender = document.createTextNode(gender);
    89. td_gender.appendChild(text_gender);
    90. //a标签的td
    91. var td_a = document.createElement("td");
    92. var ele_a = document.createElement("a");
    93. ele_a.setAttribute("href","javascript:void(0);");
    94. ele_a.setAttribute("onclick","delTr(this);");
    95. var text_a = document.createTextNode("删除");
    96. ele_a.appendChild(text_a);
    97. td_a.appendChild(ele_a);
    98. //4.创建tr
    99. var tr = document.createElement("tr");
    100. //5.添加td到tr中
    101. tr.appendChild(td_id);
    102. tr.appendChild(td_name);
    103. tr.appendChild(td_gender);
    104. tr.appendChild(td_a);
    105. //6.获取table
    106. var table = document.getElementsByTagName("table")[0];
    107. table.appendChild(tr);
    108. }
    109. script>
    110. body>
    111. html>

    * HTML DOM
        1. 标签体的设置和获取:innerHTML
        2. 使用html元素对象的属性
        3. 控制元素样式
            1. 使用元素的style属性来设置
                如:
                     //修改样式方式1
                    div1.style.border = "1px solid red";
                    div1.style.width = "200px";
                    //font-size--> fontSize
                    div1.style.fontSize = "20px";
            2. 提前定义好类选择器的样式,通过元素的className属性来设置其class属性值。

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>HTMLDOMtitle>
    6. head>
    7. <body>
    8. <div id="div1">
    9. div
    10. div>
    11. <script >
    12. var div = document.getElementById("div1");
    13. var innerHTML = div.innerHTML;
    14. //alert(innerHTML);
    15. //div标签中替换一个文本输入框
    16. // div.innerHTML = "";
    17. //div标签中追加一个文本输入框
    18. div.innerHTML += "";
    19. script>
    20. body>
    21. html>

    使用 innerHTML对表格案例进行优化:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>动态表格title>
    6. <style>
    7. table{
    8. border: 1px solid;
    9. margin: auto;
    10. width: 500px;
    11. }
    12. td,th{
    13. text-align: center;
    14. border: 1px solid;
    15. }
    16. div{
    17. text-align: center;
    18. margin: 50px;
    19. }
    20. style>
    21. head>
    22. <body>
    23. <div>
    24. <input type="text" id="id" placeholder="请输入编号">
    25. <input type="text" id="name" placeholder="请输入姓名">
    26. <input type="text" id="gender" placeholder="请输入性别">
    27. <input type="button" value="添加" id="btn_add">
    28. div>
    29. <table>
    30. <caption>学生信息表caption>
    31. <tr>
    32. <th>编号th>
    33. <th>姓名th>
    34. <th>性别th>
    35. <th>操作th>
    36. tr>
    37. <tr>
    38. <td>1td>
    39. <td>令狐冲td>
    40. <td>td>
    41. <td><a href="javascript:void(0);" onclick="delTr(this);">删除a>td>
    42. tr>
    43. <tr>
    44. <td>2td>
    45. <td>任我行td>
    46. <td>td>
    47. <td><a href="javascript:void(0);" onclick="delTr(this);">删除a>td>
    48. tr>
    49. <tr>
    50. <td>3td>
    51. <td>岳不群td>
    52. <td>?td>
    53. <td><a href="javascript:void(0);" onclick="delTr(this);" >删除a>td>
    54. tr>
    55. table>
    56. <script>
    57. /*
    58. 分析:
    59. 1.添加:
    60. 1. 给添加按钮绑定单击事件
    61. 2. 获取文本框的内容
    62. 3. 创建td,设置td的文本为文本框的内容。
    63. 4. 创建tr
    64. 5. 将td添加到tr中
    65. 6. 获取table,将tr添加到table中
    66. 2.删除:
    67. 1.确定点击的是哪一个超链接
    68. 2.怎么删除?
    69. removeChild():通过父节点删除子节点
    70. */
    71. //1.获取按钮
    72. /* document.getElementById("btn_add").onclick = function(){
    73. //2.获取文本框的内容
    74. var id = document.getElementById("id").value;
    75. var name = document.getElementById("name").value;
    76. var gender = document.getElementById("gender").value;
    77. //3.创建td,赋值td的标签体
    78. //id 的 td
    79. var td_id = document.createElement("td");
    80. var text_id = document.createTextNode(id);
    81. td_id.appendChild(text_id);
    82. //name 的 td
    83. var td_name = document.createElement("td");
    84. var text_name = document.createTextNode(name);
    85. td_name.appendChild(text_name);
    86. //gender 的 td
    87. var td_gender = document.createElement("td");
    88. var text_gender = document.createTextNode(gender);
    89. td_gender.appendChild(text_gender);
    90. //a标签的td
    91. var td_a = document.createElement("td");
    92. var ele_a = document.createElement("a");
    93. ele_a.setAttribute("href","javascript:void(0);");
    94. ele_a.setAttribute("onclick","delTr(this);");
    95. var text_a = document.createTextNode("删除");
    96. ele_a.appendChild(text_a);
    97. td_a.appendChild(ele_a);
    98. //4.创建tr
    99. var tr = document.createElement("tr");
    100. //5.添加td到tr中
    101. tr.appendChild(td_id);
    102. tr.appendChild(td_name);
    103. tr.appendChild(td_gender);
    104. tr.appendChild(td_a);
    105. //6.获取table
    106. var table = document.getElementsByTagName("table")[0];
    107. table.appendChild(tr);
    108. }*/
    109. //使用innerHTML添加
    110. document.getElementById("btn_add").onclick = function() {
    111. //2.获取文本框的内容
    112. var id = document.getElementById("id").value;
    113. var name = document.getElementById("name").value;
    114. var gender = document.getElementById("gender").value;
    115. //获取table
    116. var table = document.getElementsByTagName("table")[0];
    117. //追加一行
    118. table.innerHTML += "\n" +
    119. " "+id+"\n" +
    120. " "+name+"\n" +
    121. " "+gender+"\n" +
    122. " 删除\n" +
    123. " ";
    124. }
    125. //删除方法
    126. function delTr(obj){
    127. var table = obj.parentNode.parentNode.parentNode;
    128. var tr = obj.parentNode.parentNode;
    129. table.removeChild(tr);
    130. }
    131. script>
    132. body>
    133. html>

    控制元素样式示例代码:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>控制样式title>
    6. <style>
    7. .d1{
    8. border: 1px solid red;
    9. width: 100px;
    10. height: 100px;
    11. }
    12. .d2{
    13. border: 1px solid blue;
    14. width: 200px;
    15. height: 200px;
    16. }
    17. style>
    18. head>
    19. <body>
    20. <div id="div1">
    21. div1
    22. div>
    23. <div id="div2">
    24. div2
    25. div>
    26. <script>
    27. var div1 = document.getElementById("div1");
    28. div1.onclick = function(){
    29. //修改样式方式1
    30. div1.style.border = "1px solid red";
    31. div1.style.width = "200px";
    32. //font-size--> fontSize
    33. div1.style.fontSize = "20px";
    34. }
    35. var div2 = document.getElementById("div2");
    36. div2.onclick = function(){
    37. div2.className = "d1";
    38. }
    39. script>
    40. body>
    41. html>

    事件监听机制:

    * 概念:某些组件被执行了某些操作后,触发某些代码的执行。    
        * 事件:某些操作。如: 单击,双击,键盘按下了,鼠标移动了
        * 事件源:组件。如: 按钮 文本输入框...
        * 监听器:代码。
        * 注册监听:将事件,事件源,监听器结合在一起。 当事件源上发生了某个事件,则触发执行某个监听器代码。


        常见的事件:
                1. 点击事件:
                    1. onclick:单击事件
                    2. ondblclick:双击事件
                2. 焦点事件
                    1. onblur:失去焦点。
                        * 一般用于表单验证
                    2. onfocus:元素获得焦点。

                3. 加载事件:
                    1. onload:一张页面或一幅图像完成加载。

                4. 鼠标事件:
                    1. onmousedown    鼠标按钮被按下。
                        * 定义方法时,定义一个形参,接受event对象。
                        * event对象的button属性可以获取鼠标按钮键被点击了。
                    2. onmouseup    鼠标按键被松开。
                    3. onmousemove    鼠标被移动。
                    4. onmouseover    鼠标移到某元素之上。
                    5. onmouseout    鼠标从某元素移开。


                5. 键盘事件:
                    1. onkeydown    某个键盘按键被按下。
                    2. onkeyup        某个键盘按键被松开。
                    3. onkeypress    某个键盘按键被按下并松开。

                6. 选择和改变
                    1. onchange    域的内容被改变。
                    2. onselect    文本被选中。

                7. 表单事件:
                    1. onsubmit    确认按钮被点击。
                        * 可以阻止表单的提交
                            * 方法返回false则表单被阻止提交。
                    2. onreset    重置按钮被点击。

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>常见事件title>
    6. <script>
    7. //2.加载完成事件 onload
    8. window.onload = function(){
    9. /*//1.失去焦点事件
    10. document.getElementById("username").onblur = function(){
    11. alert("失去焦点了...");
    12. }*/
    13. /*//3.绑定鼠标移动到元素之上事件
    14. document.getElementById("username").onmouseover = function(){
    15. alert("鼠标来了....");
    16. }*/
    17. /* //3.绑定鼠标点击事件
    18. document.getElementById("username").onmousedown = function(event){
    19. // alert("鼠标点击了....");
    20. alert(event.button);
    21. }*/
    22. /* document.getElementById("username").onkeydown = function(event){
    23. // alert("鼠标点击了....");
    24. // alert(event.button);
    25. if(event.keyCode == 13){
    26. alert("提交表单");
    27. }
    28. }*/
    29. /* document.getElementById("username").onchange = function(event){
    30. alert("改变了...")
    31. }
    32. document.getElementById("city").onchange = function(event){
    33. alert("改变了...")
    34. }*/
    35. /*document.getElementById("form").onsubmit = function(){
    36. //校验用户名格式是否正确
    37. var flag = false;
    38. return flag;
    39. }*/
    40. }
    41. function checkForm(){
    42. return true;
    43. }
    44. script>
    45. head>
    46. <body>
    47. <form action="#" id="form" onclick="return checkForm();">
    48. <input name="username" id="username">
    49. <select id="city">
    50. <option>--请选择--option>
    51. <option>北京option>
    52. <option>上海option>
    53. <option>西安option>
    54. select>
    55. <input type="submit" value="提交">
    56. form>
    57. body>
    58. html>

    表单全选案例:

    需求示意图:

     

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>表格全选title>
    6. <style>
    7. table{
    8. border: 1px solid;
    9. width: 500px;
    10. margin-left: 30%;
    11. }
    12. td,th{
    13. text-align: center;
    14. border: 1px solid;
    15. }
    16. div{
    17. margin-top: 10px;
    18. margin-left: 30%;
    19. }
    20. .out{
    21. background-color: white;
    22. }
    23. .over{
    24. background-color: pink;
    25. }
    26. style>
    27. <script>
    28. /*
    29. 分析:
    30. 1.全选:
    31. * 获取所有的checkbox
    32. * 遍历cb,设置每一个cb的状态为选中 checked
    33. */
    34. //1.在页面加载完后绑定事件
    35. window.onload = function(){
    36. //2.给全选按钮绑定单击事件
    37. document.getElementById("selectAll").onclick = function(){
    38. //全选
    39. //1.获取所有的checkbox
    40. var cbs = document.getElementsByName("cb");
    41. //2.遍历
    42. for (var i = 0; i < cbs.length; i++) {
    43. //3.设置每一个cb的状态为选中 checked
    44. cbs[i].checked = true;
    45. }
    46. }
    47. document.getElementById("unSelectAll").onclick = function(){
    48. //全不选
    49. //1.获取所有的checkbox
    50. var cbs = document.getElementsByName("cb");
    51. //2.遍历
    52. for (var i = 0; i < cbs.length; i++) {
    53. //3.设置每一个cb的状态为未选中 checked
    54. cbs[i].checked = false;
    55. }
    56. }
    57. document.getElementById("selectRev").onclick = function(){
    58. //反选
    59. //1.获取所有的checkbox
    60. var cbs = document.getElementsByName("cb");
    61. //2.遍历
    62. for (var i = 0; i < cbs.length; i++) {
    63. //3.设置每一个cb的状态为相反
    64. cbs[i].checked = !cbs[i].checked;
    65. }
    66. }
    67. document.getElementById("firstCb").onclick = function(){
    68. //第一个cb点击
    69. //1.获取所有的checkbox
    70. var cbs = document.getElementsByName("cb");
    71. //获取第一个cb
    72. //2.遍历
    73. for (var i = 0; i < cbs.length; i++) {
    74. //3.设置每一个cb的状态和第一个cb的状态一样
    75. cbs[i].checked = this.checked;
    76. }
    77. }
    78. //给所有tr绑定鼠标移到元素之上和移出元素事件
    79. var trs = document.getElementsByTagName("tr");
    80. //2.遍历
    81. for (var i = 0; i < trs.length; i++) {
    82. //移到元素之上
    83. trs[i].onmouseover = function(){
    84. this.className = "over";
    85. }
    86. //移出元素
    87. trs[i].onmouseout = function(){
    88. this.className = "out";
    89. }
    90. }
    91. }
    92. script>
    93. head>
    94. <body>
    95. <table>
    96. <caption>学生信息表caption>
    97. <tr>
    98. <th><input type="checkbox" name="cb" id="firstCb">th>
    99. <th>编号th>
    100. <th>姓名th>
    101. <th>性别th>
    102. <th>操作th>
    103. tr>
    104. <tr>
    105. <td><input type="checkbox" name="cb" >td>
    106. <td>1td>
    107. <td>令狐冲td>
    108. <td>td>
    109. <td><a href="javascript:void(0);">删除a>td>
    110. tr>
    111. <tr>
    112. <td><input type="checkbox" name="cb" >td>
    113. <td>2td>
    114. <td>任我行td>
    115. <td>td>
    116. <td><a href="javascript:void(0);">删除a>td>
    117. tr>
    118. <tr>
    119. <td><input type="checkbox" name="cb" >td>
    120. <td>3td>
    121. <td>岳不群td>
    122. <td>?td>
    123. <td><a href="javascript:void(0);">删除a>td>
    124. tr>
    125. table>
    126. <div>
    127. <input type="button" id="selectAll" value="全选">
    128. <input type="button" id="unSelectAll" value="全不选">
    129. <input type="button" id="selectRev" value="反选">
    130. div>
    131. body>
    132. html>

    表单校验案例:

    需求示意图:

    代码实现: 

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>注册页面title>
    6. <style>
    7. *{
    8. margin: 0px;
    9. padding: 0px;
    10. box-sizing: border-box;
    11. }
    12. body{
    13. background: url("img/register_bg.png") no-repeat center;
    14. padding-top: 25px;
    15. }
    16. .rg_layout{
    17. width: 900px;
    18. height: 500px;
    19. border: 8px solid #EEEEEE;
    20. background-color: white;
    21. /*让div水平居中*/
    22. margin: auto;
    23. }
    24. .rg_left{
    25. /*border: 1px solid red;*/
    26. float: left;
    27. margin: 15px;
    28. }
    29. .rg_left > p:first-child{
    30. color:#FFD026;
    31. font-size: 20px;
    32. }
    33. .rg_left > p:last-child{
    34. color:#A6A6A6;
    35. font-size: 20px;
    36. }
    37. .rg_center{
    38. float: left;
    39. /* border: 1px solid red;*/
    40. }
    41. .rg_right{
    42. /*border: 1px solid red;*/
    43. float: right;
    44. margin: 15px;
    45. }
    46. .rg_right > p:first-child{
    47. font-size: 15px;
    48. }
    49. .rg_right p a {
    50. color:pink;
    51. }
    52. .td_left{
    53. width: 100px;
    54. text-align: right;
    55. height: 45px;
    56. }
    57. .td_right{
    58. padding-left: 50px ;
    59. }
    60. #username,#password,#email,#name,#tel,#birthday,#checkcode{
    61. width: 251px;
    62. height: 32px;
    63. border: 1px solid #A6A6A6 ;
    64. /*设置边框圆角*/
    65. border-radius: 5px;
    66. padding-left: 10px;
    67. }
    68. #checkcode{
    69. width: 110px;
    70. }
    71. #img_check{
    72. height: 32px;
    73. vertical-align: middle;
    74. }
    75. #btn_sub{
    76. width: 150px;
    77. height: 40px;
    78. background-color: #FFD026;
    79. border: 1px solid #FFD026 ;
    80. }
    81. .error{
    82. color:red;
    83. }
    84. #td_sub{
    85. padding-left: 150px;
    86. }
    87. style>
    88. <script>
    89. /*
    90. 分析:
    91. 1.给表单绑定onsubmit事件。监听器中判断每一个方法校验的结果。
    92. 如果都为true,则监听器方法返回true
    93. 如果有一个为false,则监听器方法返回false
    94. 2.定义一些方法分别校验各个表单项。
    95. 3.给各个表单项绑定onblur事件。
    96. */
    97. window.onload = function(){
    98. //1.给表单绑定onsubmit事件
    99. document.getElementById("form").onsubmit = function(){
    100. //调用用户校验方法 chekUsername();
    101. //调用密码校验方法 chekPassword();
    102. //return checkUsername() && checkPassword();
    103. return checkUsername() && checkPassword();
    104. }
    105. //给用户名和密码框分别绑定离焦事件
    106. document.getElementById("username").onblur = checkUsername;
    107. document.getElementById("password").onblur = checkPassword;
    108. }
    109. //校验用户名
    110. function checkUsername(){
    111. //1.获取用户名的值
    112. var username = document.getElementById("username").value;
    113. //2.定义正则表达式
    114. var reg_username = /^\w{6,12}$/;
    115. //3.判断值是否符合正则的规则
    116. var flag = reg_username.test(username);
    117. //4.提示信息
    118. var s_username = document.getElementById("s_username");
    119. if(flag){
    120. //提示绿色对勾
    121. s_username.innerHTML = "";
    122. }else{
    123. //提示红色用户名有误
    124. s_username.innerHTML = "用户名格式有误";
    125. }
    126. return flag;
    127. }
    128. //校验密码
    129. function checkPassword(){
    130. //1.获取用户名的值
    131. var password = document.getElementById("password").value;
    132. //2.定义正则表达式
    133. var reg_password = /^\w{6,12}$/;
    134. //3.判断值是否符合正则的规则
    135. var flag = reg_password.test(password);
    136. //4.提示信息
    137. var s_password = document.getElementById("s_password");
    138. if(flag){
    139. //提示绿色对勾
    140. s_password.innerHTML = "";
    141. }else{
    142. //提示红色用户名有误
    143. s_password.innerHTML = "密码格式有误";
    144. }
    145. return flag;
    146. }
    147. script>
    148. head>
    149. <body>
    150. <div class="rg_layout">
    151. <div class="rg_left">
    152. <p>新用户注册p>
    153. <p>USER REGISTERp>
    154. div>
    155. <div class="rg_center">
    156. <div class="rg_form">
    157. <form action="#" id="form" method="get">
    158. <table>
    159. <tr>
    160. <td class="td_left"><label for="username">用户名label>td>
    161. <td class="td_right">
    162. <input type="text" name="username" id="username" placeholder="请输入用户名">
    163. <span id="s_username" class="error">span>
    164. td>
    165. tr>
    166. <tr>
    167. <td class="td_left"><label for="password">密码label>td>
    168. <td class="td_right">
    169. <input type="password" name="password" id="password" placeholder="请输入密码">
    170. <span id="s_password" class="error">span>
    171. td>
    172. tr>
    173. <tr>
    174. <td class="td_left"><label for="email">Emaillabel>td>
    175. <td class="td_right"><input type="email" name="email" id="email" placeholder="请输入邮箱">td>
    176. tr>
    177. <tr>
    178. <td class="td_left"><label for="name">姓名label>td>
    179. <td class="td_right"><input type="text" name="name" id="name" placeholder="请输入姓名">td>
    180. tr>
    181. <tr>
    182. <td class="td_left"><label for="tel">手机号label>td>
    183. <td class="td_right"><input type="text" name="tel" id="tel" placeholder="请输入手机号">td>
    184. tr>
    185. <tr>
    186. <td class="td_left"><label>性别label>td>
    187. <td class="td_right">
    188. <input type="radio" name="gender" value="male" checked>
    189. <input type="radio" name="gender" value="female">
    190. td>
    191. tr>
    192. <tr>
    193. <td class="td_left"><label for="birthday">出生日期label>td>
    194. <td class="td_right"><input type="date" name="birthday" id="birthday" placeholder="请输入出生日期">td>
    195. tr>
    196. <tr>
    197. <td class="td_left"><label for="checkcode" >验证码label>td>
    198. <td class="td_right"><input type="text" name="checkcode" id="checkcode" placeholder="请输入验证码">
    199. <img id="img_check" src="img/verify_code.jpg">
    200. td>
    201. tr>
    202. <tr>
    203. <td colspan="2" id="td_sub"><input type="submit" id="btn_sub" value="注册">td>
    204. tr>
    205. table>
    206. form>
    207. div>
    208. div>
    209. <div class="rg_right">
    210. <p>已有账号?<a href="#">立即登录a>p>
    211. div>
    212. div>
    213. body>
    214. html>

  • 相关阅读:
    jdk环境变量配置、maven环境变量配置
    ide快捷键以及js的小知识
    java项目:基于Springboot+Vue+Element实现汽车租赁系统
    单例设计模式Singleton
    实现定时器
    eNSP网络实验
    价值几十亿美金的名字,Microsoft Windows的由来
    BP神经网络详解,Python实现求解异或问题
    HelloWorld显示Go语言交叉编译的强大20230926
    java生成PDF的Util
  • 原文地址:https://blog.csdn.net/gaosong0623/article/details/126506877