JavaWeb系列三: JavaScript学习 下

news2024/11/16 6:35:43

文章目录

  • js数组
    • 定义方式
    • 数组遍历
  • js函数
    • 函数入门
    • 函数使用方式
      • 使用方式一
      • 使用方式二
    • 函数注意事项
    • 函数练习题
  • 定义对象
    • 使用object定义
    • 使用{}定义
  • 事件
    • onload事件
    • onclick事件
    • 失去焦点事件
    • 内容发生改变事件
    • 表单提交事件
      • 静态注册
      • 动态注册
      • 表单作业
  • dom对象
  • 文档对象模型
  • document对象
    • 应用实例一
    • 应用实例二
    • 应用示例三
    • 应用案例四
  • DOM节点
    • 节点常用方法
      • 通过id获取节点
      • 获取所有option节点
      • 通过name获取节点
      • 查找id=language下所有li节点
      • 获取指定dom对象的所有子节点
      • 获取第一个子节点
      • 获取父节点
      • 获取前后兄弟节点
      • 设置文本域内容
  • js dom 乌龟吃鸡游戏
    • 静态注册实现

在这里插入图片描述

js数组

定义方式

array_define.html
在这里插入图片描述
在这里插入图片描述

数组遍历

traversal-array.html
在这里插入图片描述

js函数

函数入门

simple_function.html
在这里插入图片描述

函数使用方式

使用方式一

1.function-use.html
在这里插入图片描述

使用方式二

2.function-use.html
在这里插入图片描述

函数注意事项

function-detail.html
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

函数练习题

function-exercise.html
在这里插入图片描述

定义对象

使用object定义

1.object_difine.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义对象</title>
    <script type="text/javascript">
        //自定义对象的方式一
        //person是一个空对象, 没有自定义的函数和属性
        var person = new Object();//built-in
        console.log("person类型 = " + typeof(person));//object
        //增加一个属性name
        person.name = "赵志伟";
        //增加一个属性age
        person.age = 22;
        //增加一个函数
        person.hi = function () {
            //这里的this就是当前的person
            console.log("person的信息 " + this.name + " " + this.age);
        }
        //访问属性
        console.log("name=" + person.name);
        //访问方法
        person.hi();

        //小细节,如果没有定义某个属性,直接使用,就会出现:变量提升(专业术语),显示undefined
        console.log(person.email);//undefined
        //方法不能提升
        person.say();
    </script>
</head>
<body>

</body>
</html>

使用{}定义

2.function_define.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>z自定义对象方法2: {} 形式</title>
    <script type="text/javascript">
        //演示自定义对象方法2: {} 形式
        var person = {
            name: "赵志伟",//多个属性之间使用,隔开
            age: 23,
            hi: function () {
                console.log("person信息 = " + this.name + this.age);
            },
            sum: function (n1, n2) {
                return n1 + n2;
            }
        }
        //使用
        console.log("person.name=" + person.name + ", person.age=" + person.age);
        person.hi();
        console.log("sum=" + person.sum(1, 2));
    </script>
</head>
<body>
</body>
</html>

事件

在这里插入图片描述

  1. 事件的注册(绑定)
    事件注册(绑定),当事件响应(触发)后要浏览器执行哪些操作代码,叫做事件注册或事件绑定;
  2. 静态注册事件
    通过html标签的事件属性直接赋予事件响应后的代码,这种方式叫做静态注册;
  3. 动态注册事件(dom)
    通过 js 代码得到标签的 dom 对象,然后再通过 dom 对象.事件名 = function () {} 这种形式叫做动态注册
    步骤:(1)获取标签对象dom对象; (2)标签对象.事件名 = function() {}

onload事件

onload.html
在这里插入图片描述

onclick事件

onclick.html在这里插入图片描述

失去焦点事件

onblur.html
在这里插入图片描述

内容发生改变事件

onchange.html
在这里插入图片描述
在这里插入图片描述

表单提交事件

静态注册

onsubmit.html
在这里插入图片描述

动态注册

onsubmit1.html
在这里插入图片描述
在这里插入图片描述

表单作业

onsubmit-作业.html
在这里插入图片描述
在这里插入图片描述

dom对象

  1. DOM 全称是 Document Object Model 文档对象模型;
  2. 就是将文档中的标签, 属性, 文本转换成对象来管理;
    在这里插入图片描述

文档对象模型

  1. 当网页被加载时, 浏览器会创建页面的文档对象模型(Document Object Model)
  2. html dom 树

document对象

  1. document 它管理了所有的HTML 文档内容;
  2. document 它是一种树结构的文档;
  3. 有层级关系, 在 dom中把所有的标签都 对象化;
  4. 通过document 可以访问所有的标签对象;

应用实例一

getElementById.html
在这里插入图片描述

应用实例二

1.静态注册

getElementsByName.html

在这里插入图片描述
在这里插入图片描述
2.动态注册
getElementsByName-动态注册.html
在这里插入图片描述
在这里插入图片描述

应用示例三

getElementsByTagName.html
在这里插入图片描述

  • 升级版:做到猫狗切换

思路:根据value值判断选择具体的执行方法
在这里插入图片描述

应用案例四

createElements.html
在这里插入图片描述

DOM节点

在HTML DOM(文档对象模型)中,每个部分都是节点

  1. 文档 本身是文档节点;
  2. 所有 HTML元素 是元素节点;
  3. 所有 HTML属性 是属性节点;
  4. HTML元素内的 文本 是文本节点;
  5. 注释是 注释 节点;

节点常用方法

通过id获取节点

html-dom-01.html
在这里插入图片描述

获取所有option节点

html-dom02.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="style/css.css"/>
    <script type="text/javascript">
        //动态注册
        window.onload = function () {
            //查找所有option节点
            var btn02 = document.getElementById("btn02");
            btn02.onclick = function () {
                //id --> getElementById()
                //name --> getElementsByName()
                //元素标签 --> getElementsByTagName()
                var options = document.getElementsByTagName("option");
                //HTMLCollection
                for (var i = 0; i < options.length; i++) {
                    alert("options[" + (i + 1) + "] = " + options[i].innerText);
                }
            };
        };
    </script>
</head>
<body>
<div>
    <div>
        <p>你当前的女友是谁:</p>
        <select id="sel01">
            <option>--女友--</option>
            <option>霞燕</option>
            <option id="ct" value="春桃姑娘">春桃</option>
            <option>秋枫</option>
            <option>冬梅</option>
        </select>
    </div>
</div>
<div id="btnList">
    <div>
        <button id="btn02">查找所有option节点</button>
    </div>
</div>
</body>
</html>

通过name获取节点

html-dom03.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>演示HTML DOM 相关方法</title>
  <link rel="stylesheet" type="text/css" href="style/css.css"/>
  <script type="text/javascript">
    //动态注册
    window.onload = function () {
      //查找name=sport节点
      var btn03 = document.getElementById("btn03");
      btn03.onclick = function () {
        var sports = document.getElementsByName("sport");
        // alert(sports);//NodeList
        for (var i = 0; i < sports.length; i++) {
          if (sports[i].checked) {
            alert("运动是 = " + sports[i].value);
          }
        }
      };
    }
  </script>
</head>
<body>
<div>
  <div>
    <p>你喜欢的运动项目:</p>
    <input type="checkbox" name="sport" value="soccer" checked="checked"/>足球
    <input type="checkbox" name="sport" value="basketball" checked="checked"/>蓝球
    <input type="checkbox" name="sport" value="pingPang" checked="checked"/>乒乓球
  </div>
</div>
<div id="btnList">
  <div>
    <button id="btn03">查找name=sport节点</button>
  </div>
</div>
</body>
</html>

查找id=language下所有li节点

html-dom04.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="style/css.css"/>
    <script type="text/javascript">
        //动态注册
        window.onload = function () {
            //查找id=language下所有li节点
            var btn04 = document.getElementById("btn04");
            btn04.onclick = function () {
                var lis = document.getElementById("language").getElementsByTagName("li");
                // alert("lis=" + lis);//HTMLCollection
                for (var i = 0; i < lis.length; i++) {
                    alert("lis[" + (i + 1) + "] = " + lis[i].innerText);
                }
            };
        };
    </script>
</head>
<body>
<div>
    <div>
        <p>
            你的编程语言:
        </p>
        <ul id="language">
            <li id="java">Java</li>
            <li>Python</li>
            <li>Go语言</li>
        </ul>
    </div>
</div>
<div id="btnList">
    <div>
        <button id="btn04">查找id=language下所有li节点</button>
    </div>
</div>
</body>
</html>

获取指定dom对象的所有子节点

html-dom05.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="style/css.css"/>
    <script type="text/javascript">
        //动态注册
        window.onload = function () {
            //返回id=sel01的所有子节点
            var btn05 = document.getElementById("btn05");
            btn05.onclick = function () {
                //var options = document.getElementById("sel01").getElementsByTagName("option");
                //alert(options.length);//5 不算换行符
                //1. 如果使用document.getElementById("sel01").childNodes; 获取的是[object Text],[object HTMLOptionElement]
                //2. 如果不希望得到 text对象, 需要将所有的内容放在一行
                var childNodes = document.getElementById("sel01").childNodes;
                //alert(childNodes);//NodeList
                //alert(childNodes.length);//11, 加上文本, 在这里换行符属于文本[object Text]
                for (var i = 0; i < childNodes.length; i++) {
                    //alert(childNodes[i]);//HTMLOptionElement
                    if (childNodes[i].innerText != undefined && childNodes[i].selected) {
                        alert("女友有 = " + childNodes[i].innerText);
                    }
                }
                alert("===============还有一个方法===============");
                //1.sel01 是 HTMLSelectElement => 本身具有集合的特点
                var sel01 = document.getElementById("sel01");
                alert(sel01);//HTMLSelectElement
                alert(sel01[0]);//HTMLOptionElement
                for (var i = 0; i < sel01.length; i++) {
                    alert("sel01[" + (i + 1) + "] = " + sel01[i].innerText);
                }
            };
        };
    </script>
</head>
<body>
<div>
    <div>
        <p>
            你当前的女友是谁:
        </p>
        <select id="sel01">
            <option>--女友--</option>
            <option>霞燕</option>
            <option id="ct" value="春桃姑娘">春桃</option>
            <option>秋枫</option>
            <option>冬梅</option>
        </select>
    </div>
</div>
<div id="btnList">
    <div>
        <button id="btn05">返回id=sel01的所有子节点</button>
    </div>
</div>
</body>
</html>

获取第一个子节点

html-dom06.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="style/css.css"/>
    <script type="text/javascript">
        //动态注册
        window.onload = function () {
            //返回id=sel01 的第一个子节点
            var btn06 = document.getElementById("btn06");
            btn06.onclick = function () {
                var sel01 = document.getElementById("sel01");
                var childNodes = sel01.childNodes;
                alert(childNodes[0]);//object Text
                var firstChild = sel01.firstChild;
                alert(firstChild);//object Text]
                alert(sel01[0]);//直接得到第一个option节点 object HTMLOptionElement
            }
        };
    </script>
</head>
<body>
<div>
    <div>
        <p>
            你当前的女友是谁:
        </p>
        <select id="sel01">
            <option>--女友--</option>
            <option>霞燕</option>
            <option id="ct" value="春桃姑娘">春桃</option>
            <option>秋枫</option>
            <option>冬梅</option>
        </select>
    </div>
</div>
<div id="btnList">
    <div>
        <button id="btn06">返回id=sel01的第一个子节点</button>
    </div>
</div>
</body>
</html>

获取父节点

html-dom07.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="style/css.css"/>
    <script type="text/javascript">
        //动态注册
        window.onload = function () {
            //返回id=java的父节点
            var btn07 = document.getElementById("btn07");
            btn07.onclick = function () {
                var java = document.getElementById("java");
                alert(java);//HTMLLIElement
                var parentNode = java.parentNode;
                alert(parentNode);//HTMLUListElement
                alert(parentNode.innerText);
                alert(parentNode.innerHTML);//<li id="java">Java</li>
                var childNodes = parentNode.childNodes;
                alert(childNodes.length);//7
                for (var i = 0; i < childNodes.length; i++) {
                    if (childNodes[i].innerText != undefined) {//换行符[文本]也算一个节点
                        alert("childNodes[" + (i + 1) + "] = " + childNodes[i].innerText);
                    }
                }
                var parentElement = java.parentElement;
                alert(parentElement);//HTMLUListElement
            };
        }
    </script>
</head>
<body>
<div>
    <div>
        <p>
            你的编程语言:
        </p>
        <ul id="language">
            <li id="java">Java</li>
            <li>Python</li>
            <li>Go语言</li>
        </ul>
    </div>
</div>
<div id="btnList">
    <div>
        <button id="btn07">返回id=java的父节点</button>
    </div>
</div>
</body>
</html>

获取前后兄弟节点

html-dom08.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="style/css.css"/>
    <script type="text/javascript">
        //动态注册
        window.onload = function () {
            var btn08 = document.getElementById("btn08");
            btn08.onclick = function () {
                var ct = document.getElementById("ct");
                alert(ct.previousSibling);//Text[换行符]
                alert(ct.previousSibling.previousSibling);//HtmlOptionElement
                alert(ct.previousSibling.previousSibling.innerText);//霞燕
                alert(ct.nextSibling);//Text[换行符]
                alert(ct.nextSibling.nextSibling);//HTMLOptionElement
                alert(ct.nextSibling.nextSibling.innerText);//秋枫
            };
        };
    </script>
</head>
<body>
<div>
    <div>
        <p>
            你当前的女友是谁:
        </p>
        <select id="sel01">
            <option>--女友--</option>
            <option>霞燕</option>
            <option id="ct" value="春桃姑娘">春桃</option>
            <option>秋枫</option>
            <option>冬梅</option>
        </select>
    </div>
</div>
<div id="btnList">
    <div>
        <button id="btn08">返回id=ct的前后兄弟节点</button>
    </div>
</div>
</body>
</html>

设置文本域内容

html-dom09.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="style/css.css"/>
    <script type="text/javascript">
        //动态注册
        window.onload = function () {
            //设置#person的文本域
            var btn10 = document.getElementById("btn10");
            btn10.onclick = function () {
                var person = document.getElementById("person");
                person.innerText = "刀剑神域";//设置文本域
            }
        };
    </script>
</head>
<body>
<div>
    <div>
        <p>
            个人介绍:
        </p>
        <textarea name="person" id="person">个人介绍</textarea>
    </div>
</div>
<div id="btnList">
    <div>
        <button id="btn10">设置#person的文本域</button>
    </div>
</div>
</body>
</html>

总代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>演示HTML DOM 相关方法</title>
    <link rel="stylesheet" type="text/css" href="style/css.css"/>
    <script type="text/javascript">
        //动态注册
        window.onload = function () {
            //查找id=java节点
            var btn01 = document.getElementById("btn01");
            //绑定onclick事件
            btn01.onclick = function () {
                var java = document.getElementById("java");
                alert("java节点文本 = " + java.innerText);
            };
            //查找所有option节点
            var btn02 = document.getElementById("btn02");
            btn02.onclick = function () {
                //id --> getElementById()
                //name --> getElementsByName()
                //元素标签 --> getElementsByTagName()
                var options = document.getElementsByTagName("option");
                //HTMLCollection
                for (var i = 0; i < options.length; i++) {
                    alert("options[" + (i + 1) + "] = " + options[i].innerText);
                }
            };
            //查找name=sport节点
            var btn03 = document.getElementById("btn03");
            btn03.onclick = function () {
                var sports = document.getElementsByName("sport");
                // alert(sports);//NodeList
                for (var i = 0; i < sports.length; i++) {
                    if (sports[i].checked) {
                        alert("运动是 = " + sports[i].value);
                    }
                }
            }
            //查找id=language下所有li节点
            var btn04 = document.getElementById("btn04");
            btn04.onclick = function () {
                var lis = document.getElementById("language").getElementsByTagName("li");
                // alert("lis=" + lis);//HTMLCollection
                for (var i = 0; i < lis.length; i++) {
                    alert("lis[" + (i + 1) + "] = " + lis[i].innerText);
                }
            };
            //返回id=sel01的所有子节点
            var btn05 = document.getElementById("btn05");
            btn05.onclick = function () {
                //var options = document.getElementById("sel01").getElementsByTagName("option");
                //alert(options.length);//5 不算换行符
                //1. 如果使用document.getElementById("sel01").childNodes; 获取的是[object Text],[object HTMLOptionElement]
                //2. 如果不希望得到 text对象, 需要将所有的内容放在一行
                var childNodes = document.getElementById("sel01").childNodes;
                //alert(childNodes);//NodeList
                //alert(childNodes.length);//11, 加上文本, 在这里换行符属于文本[object Text]
                for (var i = 0; i < childNodes.length; i++) {
                    //alert(childNodes[i]);//HTMLOptionElement
                    if (childNodes[i].innerText != undefined && childNodes[i].selected) {
                        alert("女友有 = " + childNodes[i].innerText);
                    }
                }
                alert("===============还有一个方法===============");
                //1.sel01 是 HTMLSelectElement => 本身具有集合的特点
                var sel01 = document.getElementById("sel01");
                alert(sel01);//HTMLSelectElement
                alert(sel01[0]);//HTMLOptionElement
                for (var i = 0; i < sel01.length; i++) {
                    alert("sel01[" + (i + 1) + "] = " + sel01[i].innerText);
                }
            };
            //返回id=sel01 的第一个子节点
            var btn06 = document.getElementById("btn06");
            btn06.onclick = function () {
                var sel01 = document.getElementById("sel01");
                var childNodes = sel01.childNodes;
                alert(childNodes[0]);//object Text
                var firstChild = sel01.firstChild;
                alert(firstChild);//object Text]
                alert(sel01[0]);//直接得到第一个option节点 object HTMLOptionElement
            }
            //返回id=java的父节点
            var btn07 = document.getElementById("btn07");
            btn07.onclick = function () {
                var java = document.getElementById("java");
                alert(java);//HTMLLIElement
                var parentNode = java.parentNode;
                alert(parentNode);//HTMLUListElement
                alert(parentNode.innerText);
                alert(parentNode.innerHTML);//<li id="java">Java</li>
                var childNodes = parentNode.childNodes;
                alert(childNodes.length);//7
                for (var i = 0; i < childNodes.length; i++) {
                    if (childNodes[i].innerText != undefined) {//换行符[文本]也算一个节点
                        alert("childNodes[" + (i + 1) + "] = " + childNodes[i].innerText);
                    }
                }
                var parentElement = java.parentElement;
                alert(parentElement);//HTMLUListElement
            };
            //返回id=ct的前后兄弟节点
            var btn08 = document.getElementById("btn08");
            btn08.onclick = function () {
                var ct = document.getElementById("ct");
                alert(ct.previousSibling);//Text[换行符]
                alert(ct.previousSibling.previousSibling);//HtmlOptionElement
                alert(ct.previousSibling.previousSibling.innerText);//霞燕
                alert(ct.nextSibling);//Text[换行符]
                alert(ct.nextSibling.nextSibling);//HTMLOptionElement
                alert(ct.nextSibling.nextSibling.innerText);//秋枫
            };
            //读取id=ct的value属性值
            var btn09 = document.getElementById("btn09");
            btn09.onclick = function () {
                var ct = document.getElementById("ct");
                alert(ct.value);
                ct.innerText = "春桃姑娘";//修改文本域
            };
            //设置#person的文本域
            var btn10 = document.getElementById("btn10");
            btn10.onclick = function () {
                var person = document.getElementById("person");
                person.innerText = "刀剑神域";//设置文本域
            }
        };
    </script>
</head>
<body>
<div>
    <div>
        <p>
            你喜欢的运动项目:
        </p>
        <input type="checkbox" name="sport" value="soccer" checked="checked"/>足球
        <input type="checkbox" name="sport" value="basketball" checked="checked"/>蓝球
        <input type="checkbox" name="sport" value="pingPang" checked="checked"/>乒乓球
        <hr/>
        <p>
            你当前的女友是谁:
        </p>
        <select id="sel01">
            <option>--女友--</option>
            <option>霞燕</option>
            <option id="ct" value="春桃姑娘">春桃</option>
            <option>秋枫</option>
            <option>冬梅</option>
        </select>
        <hr/>
        <p>
            你的编程语言:
        </p>
        <ul id="language">
            <li id="java">Java</li>
            <li>Python</li>
            <li>Go语言</li>
        </ul>
        <br/>
        <br/>
        <hr/>
        <p>
            个人介绍:
        </p>
        <textarea name="person" id="person">个人介绍</textarea>
    </div>
</div>
<div id="btnList">
    <div>
        <button id="btn01">查找id=java节点</button>
    </div>
    <div>
        <button id="btn02">查找所有option节点</button>
    </div>
    <div>
        <button id="btn03">查找name=sport节点</button>
    </div>
    <div>
        <button id="btn04">查找id=language下所有li节点</button>
    </div>
    <div>
        <button id="btn05">返回id=sel01的所有子节点</button>
    </div>
    <div>
        <button id="btn06">返回id=sel01的第一个子节点</button>
    </div>
    <div>
        <button id="btn07">返回id=java的父节点</button>
    </div>
    <div>
        <button id="btn08">返回id=ct的前后兄弟节点</button>
    </div>
    <div>
        <button id="btn09">读取id=ct的value属性值</button>
    </div>
    <div>
        <button id="btn10">设置#person的文本域</button>
    </div>
</div>
</body>
</html>

js dom 乌龟吃鸡游戏

在这里插入图片描述
在这里插入图片描述

静态注册实现

tortoiseGame2.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tortoise-hen碰撞游戏</title>
    <script type="text/javascript">
        //公鸡的坐标
        var hen_xPos = 200;
        var hen_yPos = 200;
        //乌龟图片的宽度和高度
        var tortoise_width = 94;
        var tortoise_height = 67;
        //公鸡图片的宽度和高度
        var hen_width = 76;
        var hen_height = 73;

        function move(obj) {//object HTMLButtonElement
            var tortoise = document.getElementById("tortoise");
            var tortoise_left = tortoise.style.left;//100px 值传递
            var tortoise_top = tortoise.style.top;//130px  值传递
            var tortoise_xPos = parseInt(tortoise_left.substring(0, tortoise_left.indexOf("p")));
            var tortoise_yPos = parseInt(tortoise_top.substring(0, tortoise_top.indexOf("p")));

            //通过button的 dom对象,获取innerText
            switch (obj.innerText) {
                case "向上走":
                    tortoise_yPos -= 10;
                    tortoise.style.top =tortoise_yPos + "px";
                    break;
                case "向下走":
                    tortoise_yPos += 10;
                    tortoise.style.top = tortoise_yPos + 'px';
                    break;
                case "向左走":
                    tortoise_xPos -= 10;
                    tortoise.style.left = tortoise_xPos + "px";
                    break;
                case "向右走":
                    tortoise_xPos += 10;
                    tortoise.style.left = tortoise_xPos + "px";
                    break;
            }

            //走完之后再判断
            //4.1 得到乌龟左和公鸡左的距离,纵向距离y
            // (1)如果乌龟在公鸡上面, 如果纵向距离y < 乌龟图片的高度时, 说明它们可能在纵向发生重叠, 使用 yy 来记录
            // (2) 吐过乌龟在公鸡下面,如果纵向距离y < 公鸡图片的高度时, 说明它们可能在纵向发生重叠, 使用 yy 来记录
            // 4.2 得到乌龟和公鸡左上角的距离, 横向距离x
            // (1)如果乌龟在公鸡左面, 如果横向距离x < 乌龟图片的宽度时, 说明它们可能在横向发生重叠, 使用 xx 来记录
            // (2)如果乌龟在公鸡右面, 如果横向距离x < 公鸡图片的宽度时, 说明它们可能在横向发生重叠, 使用 xx 来记录
            var y = Math.abs(tortoise_yPos - hen_yPos);
            var x = Math.abs(tortoise_xPos - hen_xPos);
            var yy = 0;//
            var xx = 0;//默认横向没有重叠

            if (tortoise_yPos < hen_yPos) {//乌龟在上
                if (y < tortoise_height) {
                    yy  = 1;
                }
            } else {//乌龟在下
                if (y < hen_height) {
                    yy = 1;
                }
            }
            if (tortoise_xPos < hen_xPos) {//乌龟在左
                if (x < tortoise_width) {
                    xx = 1;
                }
            } else {//乌龟在右
                if (x < hen_width) {
                    xx = 1;
                }
            }

            if (xx && yy) {//js中 0默认是false
                alert("发生碰撞");
                tortoise.style.left = 100 + "px";
                tortoise.style.top = 130 + "px";
            }
        }
    </script>
</head>
<body>
<table>
    <tr>
        <td></td>
        <!--
            1.this表示的是你点击的这个button, 而且已经是一个dom对象
            3.可以通过dom对象操作属性和方法
        -->
        <td>
            <button onclick="move(this)">向上走</button><!--静态注册传参 只能用单引号-->
        </td>
        <td></td>
    </tr>
    <tr>
        <td>
            <button onclick="move(this)">向左走</button>
        </td>
        <td></td>
        <td>
            <button onclick="move(this)">向右走</button>
        </td>
    </tr>
    <tr>
        <td></td>
        <td>
            <button onclick="move(this)">向下走</button>
        </td>
        <td></td>
    </tr>
</table>
<img src="./img/1.bmp" id="tortoise" style="position: absolute; left: 100px; top: 130px;" border="1">
<img src="./img/2.bmp" style="position: absolute; left: 200px; top: 200px;" border="1">
</body>
</html>

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

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

相关文章

Oracle ACE夜话--和首席-总监一起跟大家谈一谈分布式数据库发展

前言 在昨日的Oracle ACE夜话中&#xff0c;和薛首席、尹总监一起聊了下当前分布式数据库的内容&#xff0c;现将分享内容又进行了相应整理&#xff0c;分享给大家&#xff0c;也希望大家多多指正。 一、自我介绍 尚雷&#xff0c;公众号【尚雷的驿站】&#xff0c;PG ACE&a…

矩阵新玩法,云微客AI矩阵系统开启新营销大门

在激烈的市场竞争中&#xff0c;商家企业们都在追求更加高效的营销方式&#xff0c;在如今流量至上的时代&#xff0c;短视频凭借其魅力&#xff0c;成为了众多企业吸引流量、获客引流的核心营销途径。而想要挤进短视频流量圈的你&#xff0c;是否经常听到矩阵这个词呢&#xf…

cad怎么导出为图片?分享四种导出方法

cad怎么导出为图片&#xff1f;在工程设计、建筑设计、机械设计等领域&#xff0c;CAD图纸的编辑和分享是一项日常工作。然而&#xff0c;如何将CAD图纸高效、准确地导出为图片格式&#xff0c;一直是设计师们关注的焦点。今天&#xff0c;就为大家推荐四款强大的CAD导出图片软…

Java web应用性能分析之【prometheus监控指标体系】

Java web应用性能分析之【系统监控工具prometheus】_javaweb服务器性能监控工具-CSDN博客 Java web应用性能分析之【prometheusGrafana监控springboot服务和服务器监控】_grafana 导入 prometheus-CSDN博客 因为篇幅原因&#xff0c;前面没有详细说明Prometheus的监控指标&…

clonezilla(再生龙)克隆物理机linux系统,然后再去另一台电脑安装

前言: 总共需要2个u盘,一个装再生龙系统,一个是使用再生龙把硬盘备份到另一个盘里面,恢复的时候,先使用再生龙引导,然后再插上盘进行复制 1.制作启动u盘 1.1下载再生龙Clonezilla 下載 1.2下载UltraISO(https://cn.ultraiso.net/uiso9_cn.exe) 1.3 打开UltraISO,选择co…

鸿蒙Harmony开发实战案例:使用OpenGL绘制3D图形

XComponent控件常用于相机预览流的显示和游戏画面的绘制,在OpenHarmony上&#xff0c;可以配合Native Window创建OpenGL开发环境&#xff0c;并最终将OpenGL绘制的图形显示到XComponent控件。本文将采用"Native C"模板&#xff0c;调用OpenGL ES图形库绘制3D图形&…

智慧校园-宿舍管理系统总体概述

在教育信息化的不断推动下&#xff0c;智慧校园宿舍管理系统脱颖而出&#xff0c;它以一种全新的视角和方式&#xff0c;重塑了高校宿舍管理的传统模式。该系统深度融合了云计算、物联网、大数据等先进科技&#xff0c;旨在为学生提供一个既安全可靠又充满便捷与温馨的居住体验…

实现设计开挂|如何设计出坚不可摧的网球拍?

数字揭秘 我们发现自己可能偶尔会以过激的方式表达沮丧或愤怒&#xff0c;哪怕是在公共场合。就算是世界级的网球运动员也无法避免偶尔的情绪爆发&#xff0c;他们有时会砸球拍来释放被压抑的情绪或应对来自竞赛的压力。 网球运动员的情绪爆发已被证明是不可避免的。哪怕是包括…

Transformer教程之Transformer的历史背景

在现代人工智能领域&#xff0c;Transformer模型已经成为一种不可或缺的技术&#xff0c;它在自然语言处理&#xff08;NLP&#xff09;和计算机视觉等多个领域取得了巨大的成功。本文将带你回顾Transformer的历史背景&#xff0c;了解它是如何从最初的构想到今天的广泛应用的。…

SpringBoot启动出错:无法访问org.springframework.boot.autoconfigure.SpringBootApplication

无法访问org.springframework.boot.autoconfigure.SpringBootApplication类文件具有错误的版本 61.0&#xff0c;应为 52.0请删除该文件或确保该文件位于正确的类路径子目录中。 出现该问题是由于版本不兼容&#xff0c; 在pom.xml文件中&#xff0c;修改版本为2开头即可

企业工程项目管理系统源码:Java版源码解析

一、项目概述 鸿鹄工程项目管理系统是基于Spring Cloud、Spring Boot、Mybatis、Vue和ElementUI技术栈&#xff0c;采用前后端分离架构构建的工程管理软件。它旨在应对企业快速发展中的管理挑战&#xff0c;提升工程管理效率&#xff0c;减轻工作负担&#xff0c;加速信息处理…

10分钟微调专属于自己的大模型_10分钟微调大模型

1.环境安装 # 设置pip全局镜像 (加速下载) pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 安装ms-swift pip install ms-swift[llm] -U# 环境对齐 (通常不需要运行. 如果你运行错误, 可以跑下面的代码, 仓库使用最新环境测试) pip install -r r…

Transformer教程之循环神经网络(RNN)和长短期记忆网络(LSTM)

在当今人工智能和深度学习的世界中&#xff0c;Transformer模型已经成为了主流。然而&#xff0c;回顾过去&#xff0c;循环神经网络&#xff08;RNN&#xff09;和长短期记忆网络&#xff08;LSTM&#xff09;在序列数据处理上也曾风靡一时。本文将详细讲解RNN和LSTM的原理、应…

【项目实训】各种反爬策略及爬虫困难点总结

在这里&#xff0c;我总结了本次项目的数据收集过程中遇到的反爬虫策略以及一些爬虫过程中容易出现问题的地方。 user-agent 简单的设置user-agent头部为浏览器即可&#xff1a; 爬取标签中带href属性的网页 对于显示岗位列表的页面&#xff0c;通常检查其源代码就会发现&…

Vite 动态导入警告问题解决方案

如上图我要实现从后台获取权限菜单并动态导入进行渲染 但由于 vite 暂时不支持这种导入方式 图中也给出了提示 本人也是这么去做了 但并没什么卵用 后来参考了 vite 的 import.meta.glob 这种方式 我在处理菜单权限控制的菜单里进行了如下操作&#xff1a; …

day001 环境的配置与工具的安装

VMware的软件包&#xff1a;https://pan.xunlei.com/s/VNs1KShnlZalTSJtejXXzchlA1?pwdudy5# 其他的软件可以在电脑管家中下载&#xff0c;注意不要安装到c盘&#xff0c;否则影响开机速度。 虚拟机工具&#xff1a;VMware17.5.1 1&#xff0c; 2&#xff0c; 3&#xff0c…

四川赤橙宏海商务信息咨询有限公司抖音电商领航者

在数字化浪潮席卷全球的今天&#xff0c;电商行业无疑是其中最为活跃、最具潜力的领域之一。而在中国这片广袤的土地上&#xff0c;四川赤橙宏海商务信息咨询有限公司以其独特的视角和前瞻性的战略布局&#xff0c;成为了抖音电商服务领域的佼佼者。今天&#xff0c;就让我们一…

Lesson 41 Penny‘s bag

Lesson 41 Penny’s bag 词汇 cheese n. 奶酪&#xff0c;芝士&#xff0c;起司【不可数】 搭配&#xff1a;a piece of cheese 一片奶酪    big cheese 大人物    cheese cake 芝士蛋糕 bread n. 面包【不可数】 各种面点&#xff1a;cake n. 蛋糕      cup cak…

我给我的学校写了个校园墙小程序

目录 前言 正文 事先声明 项目介绍 关于Github的一些点 ①贡献值的记录 ②Github中的Project是什么 ③Release和Package有什么区别 ④开源许可证之间的区别 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Securit…

QT项目实战:拼图小游戏

一、拼图智益-经典游戏&#xff08;开发环境&#xff09; 1&#xff1a;操作系统&#xff1a;Windows 10 x64专业版。 2&#xff1a;开发工具&#xff1a;Qt 5.12.8。 二、拼图智益-经典游戏&#xff08;功能模块&#xff09; 1&#xff1a;功能模块1&#xff1a;游戏启动…