深入理解JavaScript 示例 提升自我开发技能

JavaScript编程挑战:从基础到高级技能提升 本文还有配套的精品资源,点击获取 简介:JavaScript编程挑战(coding-challenges)专注于提升开发者在JavaScript语言中的技能,通过解决算法问题、操作数据结构、逻辑推理及实现实用功能来增强编程能力。这些挑战帮助学习者深入理解JavaScript的核心特性,如原型继承、闭包和异步编程,并通过实践巩固理论知识。挑战包含逐步递增难度的问题,涉及编写代... 阅读详情

示例一  使用键盘控制小球:

效果图展示:

代码展示:

<!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>键盘控制挡板</title>
    <style>
        .f {
            width: 1200px;
            height: 800px;
            border: 1px dashed red;
            position: relative;
        }
        .z {
            width: 100px;
            height: 100px;
            border-radius: 50%;
            background-color: aqua;
            position: absolute;
            left: 550px;
            top: 350px;
        }
    </style>
</head>

<body>
    <div class="f">
        <div id="ball" class="z"></div>
    </div>
</body>
<script>
    let ball = document.getElementById('ball')
    let x = 50, y = 50
    let dy = 10
    let dx = 10;
    document.onkeydown = function (e) {
        console.log(e.keyCode)
        switch (e.keyCode) {
            case 38:
                console.log('上')
                y -= dy
                ball.style.top = y - 50 + 'px'
                break;
            case 40:
                console.log('下')
                y += dy
                ball.style.top = y - 50 + 'px'
                break;
            case 37:
                x -= dx
                console.log('左')
                ball.style.left = x - 50 + 'px'
                break;
            case 39:
                console.log('右')
                x += dx
                ball.style.left = x - 50 + 'px'
                break;
        }
    }
</script>

</html>

1. 键盘事件:在JavaScript中,可以通过keydown、keyup和keypress事件来捕捉键盘按键操作。

2. event对象:当键盘事件被触发时,JavaScript会传递一个event对象作为参数给事件处理函数。

3. keyCode属性:event对象具有一个keyCode属性,它存储了按下按键的字符的数字码。

总而言之,JavaScript的keyCode属性可以用来获取按下按键的数字码,但由于它被认为是不可靠和过时的,更好的替代方案是使用event.key属性来获取按键的字符串值。

示例二:三国英雄归为

效果图展示:

 代码展示:

 <style>
        /*
        操控单个元素,布局方式:子元素绝对定位,父元素相对定位
            所有子元素,left和top都是相对父元素的左上顶点
            因此每个子元素的left和top出生在不一样
 
            父元素流式布局:
            操控批量的元素:flex,子元素相对定位
            每个子元素都是相对自身的初始值位置
 
            
        */
        .f1,
        .f2 {
            /*流式布局*/
            display: flex;
            /*每个子元素均匀分布*/
            justify-content: space-around;
        }
 
        .f1>img {
            width: 200px;
            height: 300px;
            position: relative;
            top: 0;
            left: 0;
        }
 
        .f2 {
            margin-top: 150px;
        }
 
        .f2>div {
            width: 200px;
            height: 300px;
            border: 1px solid rebeccapurple;
            text-align: center;
 
            line-height: 300px;
        }
    </style>
//HTML区块
<div class="f1">
        <img class="tu1" src="../imgs/曹操.jpg" onclick="move1(this,0)" />
        <img class="tu2" src="../imgs/貂蝉.webp" onclick="move1(this,1)" />
        <img class="tu3" src="../imgs/关羽.webp" onclick="move1(this,2)" />
        <img class="tu4" src="../imgs/刘备.jpg" onclick="move1(this,3)" />
        <img class="tu5" src="../imgs/刘协.webp" onclick="move1(this,4)" />
        <img class="tu6" src="../imgs/孙权.webp" onclick="move1(this,5)" />
    </div>
    <div class="f2">
        <div>刘协</div>
        <div>曹操</div>
        <div>貂蝉</div>
        <div>关羽</div>
        <div>刘备</div>
        <div>孙权</div>
    </div>
JavaScript区块:
<script>
    //定义一个坐标对象,记录当前操作的元素的位置
    let pos = { x: 0, y: 0 }
    //定义一个数组,存放6哥对象,独立的记录每个对象的运动坐标
    let arr = [{ x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 },{ x: 0, y: 0 }]
    function move1(img, i) {
        //pos表示当前正在操作的对象
        pos = arr[i]
        console.log(img)
        document.onkeydown = function (e) {
            switch (e.keyCode) {
                // 上
                case 37:
                    pos.x -= 5
                    img.style.left = pos.x + 'px'
                    break;
                // 下
                case 39:
                    pos.x += 5
                    img.style.left = pos.x + 'px'
                    break;
                // 左
                case 38:
                    pos.y -= 5
                    img.style.top = pos.y + 'px'
                    break;
                // 右
                case 40:
                    pos.y += 5
                    img.style.top = pos.y + 'px'
                    break;
            }
        }
    }
</script>

掌握JavaScript核心概念,提升React应用开发 本文将基于《Essential JavaScript Concepts》章节内容,深入讲解掌握JavaScript对于精通React的重要性。通过学习JavaScript的基本语法、函数、数组等概念,以及ECMAScript标准,我们将为React开发打下坚实的基础。 阅读详情

相关推荐

c#.net使用正则表达式验证文本中是否包含手机号码或电话号码?

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Collections; namespace RegularPhoneApp { class Program

码农 3585

33-js-concepts职业发展:JavaScript开发者技能提升指南

还在为JavaScript面试中的深度问题而苦恼?面对复杂的异步编程场景时感到力不从心?想要从初级开发者跃升为技术专家?这33个JavaScript核心概念正是你职业发展的关键转折点。 根据GitHub 2018年开源项目评选,这个项目被评为年度最佳开源项目之一,全球开发者社区已经将其翻译成40多种语言。掌握这些概念,你将能够: - ✅ 轻松应对技术面试中的深度问题 - ✅ 编写更高效、更健壮...

gitblog_00234的博客 1154

Linux系统下Materials Studio 2020安装避坑指南:从依赖包到许可证配置全流程

本文提供了一份在Linux系统上安装Materials Studio 2020的深度避坑指南。详细解析了从系统依赖包检查、安装流程、许可证配置到Gateway服务部署的全过程,并分享了与Slurm作业调度系统集成的实战经验,旨在帮助用户高效、稳定地完成部署。

weixin_29313547的博客 387

JavaScript Challenges Book入门:如何通过30+挑战提升你的JavaScript技能

JavaScript Challenges Book是一本专注于帮助开发者掌握JavaScript中最晦涩和棘手部分的实践指南。通过30多个精心设计的挑战,你将深入理解JavaScript的核心概念和高级特性,显著提升编程技能。无论你是初学者还是有经验的开发者,这些挑战都能帮助你发现知识盲点,巩固基础,并掌握实用的JavaScript技巧。 [![JavaScript Challenges Bo

gitblog_00980的博客 1065

ncode控件使用总结

数据格式txt转s3t #HEADER #TITLES Absolute_Time,COG_Ax,COG_Ay,COG_Az,LF_SPINDLE_AZ #UNITS ,g,g,g,g, #DATATYPES Double,Float,Float,Float,Float #DATA 2. 导入s3t数据 3. 输入数据控件 直接拖入数据源或者添加控件数据 4.

技术联盟 2006

高性能优化的本质

在很早之前,处理器性能的提升一般是通过减小元器件的尺寸,增加元器件的数量,提高主频来实现,这也是摩尔定律所说的,但是由于功耗的影响,主频不能一直增加。后来,由于英伟达的GPU的并行计算的出现,逐渐打破摩尔定律,人们利用多核,SIMD,SIMT来处理大量相同计算的数据,这极大的提高了效率。计算机的算力得到了巨大的提升,但是并行是困难的,对于有数据依赖的程序来说,处理并行是一件及其困难的事,但对于一些简单的数学库的计算,并行的实现相对简单。

发狂的小花的博客 274

深入理解 ECMAScript modules:提升你的 JavaScript 技能(一)

ECMAScript modules(ES modules)是 JavaScript 的一种模块化编程方法,它基于 ECMAScript 标准,提供了更加简洁、高效、可维护的代码组织方式。命名空间和模块化:ES modules 允许将一组相关的函数和变量封装成一个模块,每个模块拥有自己的作用域,可以避免全局命名空间的污染,提高代码的可维护性和可读性。按需加载:ES modules 支持动态导入,可以根据需要按需加载模块,这样可以减少初始加载时间的消耗,提高网页性能。// 动态导入模块条件加载。

你若盛开,清风自来 1237

OpenClaw与大语言模型(Claude/GPT/MiniMax)的集成架构与最优配置策略

摘要 本文探讨了OpenClaw框架与大语言模型(Claude/GPT/MiniMax)的集成架构与优化策略。大语言模型具有强大的自然语言处理能力,但集成面临API成本、响应延迟、上下文管理等挑战。OpenClaw采用分层架构设计,包括用户界面层、对话管理层、提示工程层、模型适配层和API调用层,支持多模型切换、智能对话管理和成本控制。系统通过模型适配层实现不同API的统一调用,并提供缓存、监控等优化机制。该集成方案能够充分发挥大语言模型的优势,为本地AI助理提供更智能的服务。

一键难忘的博客 1695

什么是 js 变量提升 (Javascript Hoisting)

Javascript是一门容易遭人误解的语言,但是它的强大毋庸置疑。个人觉得,要想深入理解Javascript语言,首先必须对其基本的概念(例如:Scope,Closure,Hoisting等)要真正理解。今天想通过自己的理解来对Javascript Hoisting(国内一般翻译为 变量提升)做一个阐述:   在解释Javascript Hoisting之前,先看一下几段代码: ...

weixin_30825199的博客 2038

【即插即用模块】注意力篇 | TIP 2024 | 注意力机制的有效改进!内容引导注意力块CGA,空间-通道-像素三个维度融合,实现涨点!

CGA(Content-Guided Attention)是一种融合多维度注意力的即插即用模块,通过并联空间和通道注意力并与像素注意力串联,实现从通道、空间到像素的三层级特征筛选。该模块采用层级递进设计,解决了传统单维度注意力的局限性,尤其适用于图像恢复等对特征精度要求高的任务。实验表明,CGA在去雾任务中能显著提升指标,但会略微增加参数量。模块代码支持灵活集成到各类视觉模型中,建议放置在网络靠前位置以充分释放后续层性能。其核心创新在于通过7×7大卷积捕捉长距离依赖,结合分组卷积实现像素级细粒度建模

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 229

基于MATLAB的最大重叠离散小波变换(MODWT)算法详解

最大重叠离散小波变换(Maximal Overlap Discrete Wavelet Transform, MODWT)是DWT的重要改进形式,由Percival和Walden等人在20世纪90年代系统提出并完善。MODWT通过消除下采样操作,采用样本平移不变的分解方式,解决了DWT的多个固有缺陷。MODWT的核心创新在于取消下采样环节。与DWT每级分解后对滤波输出进行二分下采样不同,MODWT在每一级都使用相同的滤波器,但通过插入零值的方式调整滤波器系数,保持每级系数数量与原始信号相同。

qq_42212808的博客 115

探索《JavaScript Tips》:提升你的前端开发技能

探索《JavaScript Tips》:提升你的前端开发技能 项目简介 在上,有一个名为的开源项目,它由开发者sunyuhui精心打造,旨在分享各种JavaScript编程技巧和最佳实践。这个项目通过一系列简洁明了的例子,帮助开发者深入理解JavaScript语言的各种特性,提高开发效率。 技术分析 该项目以Markdown格式编写,易于阅读和分享。每个提示都是一段代码或一个小知识点,涵盖了从基础...

gitblog_00003的博客 294

STM32嵌入式标准化封装五层架构设计与工程实践

在嵌入式系统开发中,代码封装是保障可维护性、可复用性与可靠性的核心工程能力。其本质是通过分层抽象(硬件抽象层→设备驱动层→应用逻辑层)解耦硬件依赖与业务逻辑,实现跨芯片移植、多任务安全及确定性实时响应。关键技术包括HAL库重构以消除硬编码初始化、驱动层提供同步/异步/事件驱动三类UART接口、中断优先级矩阵管理确保响应确定性、双阶段时钟配置兼顾启动鲁棒性与运行能效,以及面向Modbus等工业协议的语义化API封装。这些实践直击STM32项目中引脚变更难、HAL裸调风险高、中断处理不安全、时钟配置僵化等典型痛

weixin_35019679的博客 68

JavaScript对象详解,深入理解js对象

点击这里即可获取,包括答案解析。由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)点击这里即可获取,包括答案解析。[外链图片转存中…(img-you7p05m-1712430505777)]

sgegv的博客 1126

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

探索 JavaScript 30 天挑战:提升你的前端技能

探索 JavaScript 30 天挑战:提升你的前端技能 在这个数字化的时代,JavaScript 已经成为构建交互式网页和应用的核心语言。为了帮助开发者们深入理解和掌握 JavaScript, 创建了一个名为 的项目,它是一个精心设计的实战课程,旨在30天内全面提升你的 JavaScript 技能。 项目简介 JavaScript-30days 是一个自我学习计划,包含了30个独立的实例,涵...

gitblog_00008的博客 522

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深入理解JavaScript声明提升

JavaScript中的变量声明提升 我们先来看一段代码 console.log(a) //undefined var a = 1 上面这两行代码不难理解, var定义的变量声明都会被提升至本作用域的顶部。所以上面的两行代码等价于下面的三行代码。 var a console.log(a) a = 1 再来看 console.log(a) //报错 a = 1 前面已经...

Hello World 3541

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深入理解JS中的函数提升

典型的函数提升,就是在同一个<script…/>元素内,JS允许先调用函数,然后在后面再定义函数,举个简单的例子如下: <script> //先调用add函数 alert(add(2,5)) //后定义add函数 function add(a,b) { return a+b; } </script> 运行结果如下: 上面的代码先调用 ...

枫林晚的博客 726

推荐文章:JavaScript30——进阶你的前端技能

推荐文章:JavaScript30——进阶你的前端技能 项目介绍 如果你正在寻找一个能让你深入了解JavaScript并提升编码技巧的资源,不妨看看JavaScript30。这是一个为期30天的技术挑战项目,通过实践,帮助开发者掌握JavaScript的核心概念和技术。项目提供了每天的课程材料,包括启动文件和完成示例,确保无论是新手还是有经验的开发者都能有所收获。 项目技术分析 技术核心 Java...

gitblog_00748的博客 840

深入理解JavaScript变量提升

js变量提升 JavaScript是单线程语言,所以执行肯定是按顺序执行。但是并不是逐行的分析和执行,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段。在编译阶段阶段,代码真正执行前的几毫秒,会检测到所有的变量和函数声明,所有这些函数和变量声明都被添加到名为Lexical Environment的JavaScript数据结构内的内存中。所以这些变量和函数能在它们真正被声明之前使用。 先从一个简单的例子来入手: a = 2; var a; console.log(a); 以上的代码会输出什么,

Ned的优快云博客 551

深入理解 ECMAScript modules:提升你的 JavaScript 技能(二)

🤍 前端开发工程师、技术日更博主、已过CET6🍨、23年度博客之星前端领域TOP1🕠高级专题作者、打造专栏🍚签约作者、上架课程。

你若盛开,清风自来 1136

【Node.js】深入理解 V8 JavaScript 引擎

V8 是由 Google 开发的开源 JavaScript 引擎,用 C++ 编写,最初用于 Chrome 浏览器,现在广泛用于其他项目,包括 Node.js 和 Deno。核心特点高性能:通过即时编译 (JIT) 和优化技术提升 JavaScript 执行效率。跨平台支持:运行在 Linux、Windows 和 macOS 等多个平台。多语言支持:支持 JavaScript 和 WebAssembly。

佚名程序员 2807

You-Dont-Know-JS :深入理解JavaScript核心机制

You-Dont-Know-JS :深入理解JavaScript核心机制 项目介绍 You Don't Know JS 是一套深度探索 JavaScript 语言核心机制的书籍系列,由经验丰富的开发者 Kyle Simpson 编写。该系列书籍的第一版已经完成,涵盖了从基础到高级的多个主题,旨在帮助开发者更深入地理解 JavaScript 的本质。 项目技术分析 You Don't Know JS...

gitblog_00507的博客 766

深入理解 ECMAScript modules:提升你的 JavaScript 技能(四)

🤍 前端开发工程师、技术日更博主、已过CET6🍨、23年度博客之星前端领域TOP1🕠高级专题作者、打造专栏🍚签约作者、上架课程。

你若盛开,清风自来 1146

探索JavaScript数组的艺术:js-array-operations项目深度剖析

探索JavaScript数组的艺术:js-array-operations项目深度剖析 在编程的浩瀚宇宙中,JavaScript以其灵活性和广泛性占据了重要的一席之地。而在JavaScript的世界里,数组操作是日常开发中不可或缺的一部分。今天,我们要向您推荐一个精巧实用的开源项目——js-array-operations,它解锁了探索JavaScript数组的20种新方式。 项目介绍 js-a...

gitblog_00141的博客 1003

Highcharts 开发必备的关键技能

Highcharts 开发并不是单一技能,而是多维度能力的结合JavaScript 与前端基础:打牢根基数据可视化能力:选择合适图表 & 信息表达Highcharts API 熟练度:深入理解与应用数据处理能力:JSON/CSV/XML 格式转换与清洗问题解决与优化能力:应对性能和交互挑战掌握这些技能,你不仅能快速上手 Highcharts,还能在实际项目中构建高性能、高交互、可维护的可视化解决方案。

Highcharts可视化图表库中文博客 1236

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 149
上一篇: 编写高效 JavaScript动画 使用定时器技巧和圆周运动
下一篇: JavaScript案例+vue入门
小 zi
博客等级 码龄5年 3粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值