IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JS关于函数与事件 -> 正文阅读

[JavaScript知识库]JS关于函数与事件

这几天的学习中,遇到了一些案例:

1.给添加的列表打印第几行:

<!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>
        div{
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
<body>
    <ul id="list">

    </ul>
    <button id="ton" onclick="creat()">添加事件</button>
 
</body>
<script>
    var list=document.getElementById("list");
    var ton=document.getElementById("ton");
    var i = 0;
    function creat() {
        var li = document.createElement("li");
        li.innerHTML="列表";
        li.setAttribute("name",++i)
        li.setAttribute("onclick","test("+i+")");
        list.appendChild(li);
        }
     
        function test(i){
            alert(i);
        }



</script>
</html>

在这里运用setAttribute这个方法,对Li的name值和onclick进行修改,再在下面设置一个函数,来显示该列表的序列,这里需要注意的就是在onclick这里对这个事件进行添加和修改。

2.冒泡算法的运用

    var arrey=[1,7,6,75,64];//length=5 max index=4
    function bj(arrey){
        for(i=0;i<arrey.length-1;i++){
            for(var j = 0; j < arrey.length-1-i;j++){
                if(arrey[j]>arrey[j+1]){
                var ls = arrey[j];
                arrey[j]=arrey[j+1];
                arrey[j+1]=ls;
                }
            }
        }
    return arrey;
    }
    bj(arrey);
    document.write(arrey);

这里是在确定的数值下进行排序,运用冒泡算法,设置了一个新的ls作为过度变量,下面的就是通过输入来进行排序:

var sr;
var szz = [];
var i = 0;
function bj() {
    while (sr != "exit") {
        sr = prompt("请输入一个数组(exit结束)");
        if (sr == "exit") {
            break;
        }
        else if (sr = Number(sr)) {
            szz[i] = Number(sr);
        }
        i++;
    }
    return szz;
}
bj();
function px() {//冒泡算法例子
    for (var k = 0; k < szz.length - 1; k++) {
        for (j = 0; j < szz.length - 1 - k; j++) {
            if (szz[j] > szz[j + 1]) {
                var ls = szz[j];
                szz[j] = szz[j + 1];
                szz[j + 1] = ls;
            }
        }
    }
    return szz;
}
px();
document.write(szz);

定义一个空数组,然后通过输入等于sr在把sr赋值到空数组内形成数组。

3.鼠标移动:

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=<>>, initial-scale=1.0">
    <title>Document</title>
    <style>
        #move {
            background-color: red;
            width: 100px;
            height: 100px;
            position: relative;
        }
        body{
            height: 900px;
        }
    </style>
</head>

<body>
    <div id="move">盒子随鼠标移动</div>
</body>
<script>
    var sj = document.getElementById("move");
    var body = document.getElementsByTagName("body");
    body[0].onmousemove = function (event) {
        var x = event.clientX;
        var y = event.clientY;
        sj.style.left = x+"px";
        sj.style.top = y+"px";
    }
 
</script>

这里使用了onmousemove,在鼠标进入内容的时候,里面的内容跟着鼠标移动。

clientX ? ? ?鼠标相对于浏览器(这里说的是浏览器的有效区域)左上角x轴的坐标; ?不随滚动条滚动而改变

clientY ? ? ? ?鼠标相对于浏览器(这里说的是浏览器的有效区域)左上角y轴的坐标; ?不随滚动条滚动而改变;

4.劣质版贪吃蛇

<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>
        #maxbox {
            width: 900px;
            height: 700px;
            background-color: gray;
            border: 2px solid black;
            position: relative;     /*距离原来位置的距离 (记)*/
        }

        #snake {
            width: 50px;
            height: 50px;
            background-color: red;
            position: absolute;
        }

        #douzi {
            width: 50px;
            height: 30px;
            background-color: blue;
            position: absolute;  /*现在是距离maxbox的位置*/
            top: 0;
            left: 0;

        }
    </style>
</head>

<body>
    <div id="maxbox">
        <div id="snake"></div>
        <div id="douzi"></div>
    </div>
</body>
<script>
    alert("开始游戏,WSAD移动");
    var snake = document.getElementById("snake");
    var douzi = document.getElementById("douzi");
    var body = document.getElementsByTagName("body");
    douzi.style.left = Math.random() * 846 + "px";
    douzi.style.top = Math.random() * 616 + "px";
    body[0].onkeydown = function (event) {
        var onkey = event;
        var keyCode = onkey.keyCode;                        //snake键盘移动
        switch (keyCode) {                            //keyCode表示的是键值表,键盘每个值对应数字
            case 65:
                if (snake.offsetLeft < 10) {
                    break;
                }
                snake.style.left = snake.offsetLeft - 10 + "px";
                break;
            case 68:
                if (snake.offsetLeft >= 850 || snake.offsetLeft + snake.offsetWidth >= 900) {
                // if (snake.offsetLeft >= 850 || snake.offsetLeft + snake.offsetWidth > 89(0~9)不能等于十) { 
                    break;
                }
                snake.style.left = snake.offsetLeft + 10 + "px";
                break;
            case 83:
                if (snake.offsetTop >= 650) {
                    break;
                }
                snake.style.top = snake.offsetTop + 10 + "px";
                break;
            case 87:
                if (snake.offsetTop < 10) {
                    break;
                }
                snake.style.top = snake.offsetTop - 10 + "px";
                break;
        }
        if (snake.offsetLeft + snake.clientWidth >= douzi.offsetLeft          //触碰时豆子变化以及蛇的加长
            && snake.offsetLeft <= douzi.offsetLeft + douzi.clientWidth         //offsetLeft 距离父元素的左边的边距 offsetTop 距离父元素的上边边的边距(注意,要注意设置父元素的postion这里是距离父元素的距离,父元素没定位,则相对于页面)
            && snake.offsetTop + snake.clientHeight >= douzi.offsetTop          //clientWidth  返回元素的宽度(包括元素宽度、内边距,不包括边框和外边距)
            && snake.offsetTop <= douzi.offsetTop + douzi.clientHeight          //offsetWidth  返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距)
        ) {
            douzi.style.left = Math.random() * 846 + "px";              //随机数Math.random
            douzi.style.top = Math.random() * 616 + "px";
            snake.style.width = (snake.clientWidth + 20) + "px";          //增大

            if (snake.style.width == 150 + "px") {                    //游戏结束,设置多少结束游戏
                alert("游戏结束");
                window.location.reload();                 //刷新页面
            }
        }
    }




    // var timer = setInterval(function(){  // 每隔多是时间改变,定时器
    //     douzi.style.left=Math.random() * 846 + "px";
    //     douzi.style.top=Math.random() * 616 + "px";
    // }, 2000);

</script>

1.在这里使用的是onkeydown,当键盘按下去的时候会发生的事件

2.keycode是键值表,键盘上的值对应相应的值

3.clientWidth ?返回元素的宽度(包括元素宽度、内边距,不包括边框和外边距)

4.offsetWidth ?返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距)

5.offsetLeft 距离父元素的左边的边距 。offsetTop 距离父元素的上边边的边距 (注意,要注意设置父元素的postion这里是距离父元素的距离,父元素没定位,则相对于页面)

6.window.location.reload();表示的是刷新页面。

在这里设置触碰的时候是设置的&&所以必须同时满足这些条件,才会触发。

总结:做许多页面的时候,代码会出现运用的时候样式出错,可以在页面上检查,看第几行出现错误,同时许多代码不是能熟练运用,只有做到许多类似的页面的时候,才能熟练运用。许多时候可以运用事件委托来解决问题,事件委托:本来应该绑定在子元素的内容,可以绑定在父元素上,运用事件冒泡的理论,当点击子元素时,就会触发父元素,形成效果。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:01:50  更:2021-11-25 08:03:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:06:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码