区块链100讲:从宠物商店案例看DAPP架构和WEB3.JS交互接口

上位机开发实战指南:从C#/Qt技术选型到工业设备集成 上位机开发是工业自动化领域的核心技术,指在控制系统中负责监控、数据采集和人机交互的计算机系统。其工作原理是通过通信协议(如Modbus、OPC UA等)与下位机设备进行数据交换,实现实时监控和控制指令下发。在工业4.0和智能制造背景下,上位机开发的技术价值日益凸显,能够有效解决设备数据采集不稳定、界面响应卡顿等工程实践问题。典型应用场景包括生产线监控系统、智能仓储控制台、能源管理系统等工业自动化领域。针对C#与Qt等技术选型,需要根据Windows环境或跨平台需求进行合理选择,同时掌握通信协议解析和工业设备 阅读详情

image

1

概 述

本指南旨在约定solidity代码的编码规范。本指南是不断变化演进的,旧的、过时的编码规范会被淘汰, 而新的、有用的规范会被添加进来。

许多项目会实施他们自己的编码风格指南。如遇冲突,应优先使用具体项目的风格指南。

本风格指南中的结构和许多建议是取自python的 pep8 style guide。

本指南并 不是 以指导正确或最佳的solidity编码方式为目的。本指南的目的是保持代码的 一致性 。 来自python的参考文档pep8 <https://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds>_。 很好的阐述了这个概念。

风格指南是关于一致性的。与此风格指南的一致性非常重要。项目中的一致性更重要。一个模块或功能内的一致性是最重要的。

但最重要的是:知道什么时候不一致 ——有时风格指南不适用。如有疑问,请自行判断。看看其他例子,并决定什么看起来最好。并应毫不犹豫的询问他人!

2

代码结构

缩进

每个缩进级别使用4个空格。

制表符或空格

  • 空格是首选的缩进方法。

  • 应该避免混合使用制表符和空格。

空行

在solidity源码中合约声明之间留出两个空行。

正确写法:

contract A {    ...

}

contract B {    ...

}

contract C {    ...

}

错误写法:

contract A {    ...

}

contract B {    ...

}

contract C {    ...

}

在一个合约中的函数声明之间留有一个空行。

在同一合约中的一组函数声明之间可以省略空行(例如抽象合约的存根函数)

正确写法:

contract A {

    function spam() public;

    function ham() public;}contract B is A {

    function spam() public { 

       ...

    }

    function ham() public {

        ... 

   }

}

错误写法:

contract A {

    function spam() public {

        ...

    }

    function ham() public {

        ...

    }

}

源文件编码格式

首选UTF-8或ASCII编码。

Imports规范

导入语句应始终放在文件的顶部。

正确写法:

import "owned";contract A {

    ...

}

contract B is owned {

    ...

}

错误写法:

contract A {

    ...

}

import "owned";

contract B is owned {

    ...

}

函数顺序

排序有助于读者识别他们可以调用哪些函数,并更容易地找到构造函数和回退函数的定义。

功能应根据其可见性和顺序进行分组:

  • 构造函数

  • 回退函数定义(如果存在)

  • 外部函数

  • 公共函数

  • 内部函数和变量

  • 私有函数和变量

在一个分组中,最后放置常量函数。

正确写法:

contract A {

    function A() public {

        ...

    }

    function() public {

        ...

    }

    // External functions

    // ...

    // External functions that are constant

    // ...

    // Public functions

    // ...

    // Internal functions

    // ...

    // Private functions

    // ...

}

错误写法:

contract A {

    // External functions

    // ...

    // Private functions

    // ...

    // Public functions

    // ...

    function A() public {

        ...

    }

    function() public {

        ...

    }

    // Internal functions

    // ...

}

表达式中的空格

在以下情况下避免无关的空格:除单行函数声明外,中括号或者大括号中的立即数应该避免空格。

正确写法:

spam(ham[1], Coin({name: "ham"}));

错误写法:

spam( ham[ 1 ], Coin( { name: "ham" } ) );

除外:

function singleLine() public { spam(); }

紧接在逗号,分号之前:

正确写法:

function spam(uint i, Coin coin) public;

错误写法:

function spam(uint i , Coin coin) public ;

赋值或者其他操作符两边用于对齐的多个空格:

正确写法:

x = 1;

y = 2;

long_variable = 3;

错误写法:

x             = 1;

y             = 2;

long_variable = 3;

回退函数中不要包含空格:

正确写法:

function() public {

    ...

}

错误写法:

function () public {

    ...

}

控制结构

用大括号表示一个合约,库、函数和结构 应该:

  • 开括号与声明应在同一行

  • 闭括号在与之前函数声明对应的开括号保持同一缩进级别上另起一行.

  • 开括号前应该有一个空格。

正确写法:

contract Coin {

    struct Bank {

        address owner; 

       uint balance;

    }

}

错误写法:

contract Coin{

    struct Bank {

        address owner;  

      uint balance;

    }

}

对于控制结构 if, else, while, for 的实施建议与以上相同。

另外,诸如 if, else, while, for 这类的控制结构和条件表达式的块之间应该有一个单独的空格, 同样的,条件表达式的块和开括号之间也应该有一个空格。

正确写法:

if (...) {

    ...

}

for (...) {

    ...

}

错误写法:

if (...){

    ...

}

while(...){}

for (...) { 

   ...;
}

对于控制结构,如果其主体内容只包含一行,则可以省略括号。

正确写法:

if (x < 10)
   x += 1;

错误写法:

if (x < 10)
   someArray.push(Coin({
       name: 'spam',
       value: 42
   }));

对于具有 else 或 else if 子句的 if 块, else 应该是与 if 的闭大括号放在同一行上。 这一规则区别于 其他块状结构。

正确写法:

if (x < 3) {

    x += 1;

} else if (x > 7) {

    x -= 1;

} else {

    x = 5;

}

if (x < 3)

    x += 1;

else

    x -= 1;

错误写法:

if (x < 3) {

    x += 1;

}else {

    x -= 1;

}

函数声明

对于简短的函数声明,建议函数体与函数声明保持在同一行。

闭大括号应该与函数声明的缩进级别相同。

开大括号之前应该有一个空格。

正确写法:

function increment(uint x) public pure returns (uint) {

    return x + 1;

}

function increment(uint x) public pure onlyowner returns (uint) {

    return x + 1;

}

错误写法:

function increment(uint x) public pure returns (uint){ 

   return x + 1;

}

function increment(uint x) public pure returns (uint){  

  return x + 1;

}

function increment(uint x) public pure returns (uint) { 

   return x + 1;

}

function increment(uint x) public pure returns (uint) {  

  return x + 1;
}

函数的可见性修饰符应该出现在任何自定义修饰符之前。

正确写法:

function kill() public onlyowner { 

   selfdestruct(owner);

}

错误写法:

function kill() onlyowner public { 

   selfdestruct(owner);

}

对于长函数声明,建议将每个参数独立一行并与函数体保持相同的缩进级别。闭括号和开括号也应该 独立一行并保持与函数声明相同的缩进级别。

正确写法:

function thisFunctionHasLotsOfArguments(
   address a,
   address b,
   address c,
   address d,
   address e,
   address f)
   public{
   doSomething();}

错误写法:

function thisFunctionHasLotsOfArguments(address a, address b, address c, 

   address d, address e, address f) public {

    doSomething();

}

function thisFunctionHasLotsOfArguments(address a,                                        address b, 

         address c,  

         address d, 

         address e,   

         address f) public { 

   doSomething();

}

function thisFunctionHasLotsOfArguments(

    address a,

    address b, 

  address c,

    address d, 

   address e, 

   address f) public {

    doSomething();

}

如果一个长函数声明有修饰符,那么每个修饰符应该下沉到独立的一行。

正确写法:

function thisFunctionNameIsReallyLong(address x, address y, address z)    public

    onlyowner

    priced 

   returns (address){

    doSomething();

}

function thisFunctionNameIsReallyLong(

    address x,

    address y,

    address z,) 

   public

    onlyowner

    priced

    returns (address){

    doSomething();

}

错误写法:

function thisFunctionNameIsReallyLong(address x, address y, address z)                                     

public

                                      onlyowner

                                      priced

                                      returns (address) {

    doSomething();

}

function thisFunctionNameIsReallyLong(address x, address y, address z)    public onlyowner priced returns (address){    doSomething();

}

function thisFunctionNameIsReallyLong(address x, address y, address z)    

public    onlyowner    priced    returns (address) {

    doSomething();

}

多路输出参数和返回语句应遵循推荐统一风格,可参考 Maximum Line Length 章节。

正确写法:

function thisFunctionNameIsReallyLong(

    address a,

    address b,

    address c)

    public

    returns (

        address someAddressName,

        uint256 LongArgument,

        uint256 Argument

    ){

    doSomething()

    return (

        veryLongReturnArg1,

        veryLongReturnArg2,

        veryLongReturnArg3

    );

}

错误写法:

function thisFunctionNameIsReallyLong(

    address a,

    address b,

    address c)

    public

    returns (address someAddressName,

             uint256 LongArgument, 

            uint256 Argument){

    doSomething()

    return (veryLongReturnArg1, 

           veryLongReturnArg1, 

           veryLongReturnArg1);

}

对于继承合约中需要参数构造函数,如果函数声明很长或难以阅读,则建议将基构造函数和修饰符下沉放在 新的一行上。

正确写法:

contract A is B, C, D {

    function A(uint param1, uint param2, uint param3, uint param4, uint param5)

        B(param1)

        C(param2, param3) 

       D(param4) 

       public    { 

       // do something with param5    }

}

错误写法:

contract A is B, C, D { 

   function A(uint param1, uint param2, uint param3, uint param4, uint param5) 

   B(param1)

    C(param2, param3) 

   D(param4) 

   public

    { 

       // do something with param5 

   }

}

contract A is B, C, D {

    function A(uint param1, uint param2, uint param3, uint param4, uint param5)

        B(param1)

        C(param2, param3)

        D(param4)

        public {

        // do something with param5 

   }

}

当用单个语句声明简短函数时,允许在一行中完成。

允许:

function shortFunction() public { doSomething(); }

这些函数声明的准则旨在提高可读性。 因为本指南不会涵盖所有内容,作者应该自行判断函数声明的可能排列方式。

映射

待定

变量声明

数组变量的声明在变量类型和括号之间不应该有空格。

正确写法:

uint[] x;

错误写法:

uint [] x;

其他建议

  • 字符串应该用双引号而不是单引号。

正确写法:

str = "foo";

str = "Hamlet says, 'To be or not to be...'";

错误写法:

str = 'bar';

str = '"Be yourself; everyone else is already taken." -Oscar Wilde';
  • 操作符两边应该各有一个空格。

正确写法:

x = 3;

x = 100 / 10;

x += 3 + 4;

x |= y && z;

错误写法:

x=3;

x = 100/10;

x += 3+4;

x |= y&&z;
  • 为了表示优先级,高优先级操作符两边可以省略空格。这样可以提高复杂语句的可读性。 你应该在操作符两边。总是使用相同的空白量:

正确写法:

x = 2**3 + 5;

x = 2*y + 3*z;

x = (a+b) * (a-b);

错误写法:

x = 2** 3 + 5;

x = y+z;

x +=1;

3

命名规范

当完全采纳和使用命名规范时会产生强大的作用。 当使用不同的规范时,则不会立即获取代码中传达的重要 元 信息。

这里给出的命名建议旨在提高可读性,因此它们不是规则,而是透过名称来尝试和帮助传达最大的信息量。

最后,基于代码库中的一致性,本文档中的任何规范总是可以被(代码库中的规范)取代。

命名方式

为了避免混淆,下面的名字用来指不同的命名方式。

  • b (单个小写字母)

  • B (单个大写字母)

  • lowercase (小写)

  • lower_case_with_underscores (小写和下划线)

  • UPPERCASE (大写)

  • UPPER_CASE_WITH_UNDERSCORES (大写和下划线)

  • CapitalizedWords (驼峰式,首字母大写)

  • mixedCase (混合命名法,区别于首字母大写的初始字母小写!)

  • Capitalized_Words_With_Underscores (首字母大写和下划线)

  • 注意:: 当使用驼峰式进行首字母缩写时,大写缩写中的所有字母。 因此HTTPServerError比HttpServerError好。

  • 当使用混合名称命名时,除了保留第一个缩写小写(如果它是名称的开头),大写缩写中的所有字母。 因此xmlHTTPRequest比XMLHTTPRequest更好。

应避免*的名称*

  • l - el的小写方式

  • O - oh的大写方式

  • I - eye的大写方式

切勿将任何这些用于单个字母的变量名称。 他们经常与数字1和零不可区分。

合约和库名称

合约和库名称应该使用驼峰式风格。比如:SimpleToken, SmartBank, CertificateHashRepository, Player.

结构体名称

结构体名称应该使用驼峰式风格。比如:MyCoin, Position, PositionXY.

事件名称

事件名称应该使用驼峰式风格。比如:Deposit, Transfer, Approval, BeforeTransfer, AfterTransfer.

函数名称

函数名称不同于结构,应该使用混合命名法风格。比如:getBalance, transfer, verifyOwner, addMember, changeOwner.

函数参数命名

函数参数命名应该使用混合命名法风格。比如:initialSupply, account, recipientAddress, senderAddress, newOwner. 在编写操作自定义结构的库函数时,第一个参数应该是结构体,并且应该始终命名为“self”。

本地变量和状态变量名称

使用混合命名法风格。比如:totalSupply, remainingSupply, balancesOf, creatorAddress, isPreSale, tokenExchangeRate.

常量命名

常量应该全都使用大写字母书写,并用下划线分割单词。比如:MAX_BLOCKS, TOKEN_NAME, TOKEN_TICKER, CONTRACT_VERSION.

修饰符命名

使用混合命名法风格。比如:onlyBy, onlyAfter, onlyDuringThePreSale.

枚举变量命名

枚举,在简单类型声明时,应该使用驼峰式风格。比如:TokenGroup, Frame, HashStyle, CharacterLocation.

避免命名冲突

  • single_trailing_underscore_

当所起名称与内建或保留关键字相冲突时,建议使用此惯例内置或其他保留名称。

常规建议

待定

本文作者:HiBlock区块链技术布道群-毛明旺

原文发布于公众号:毛哥聊技术

加微信baobaotalk_com,加入技术布道群

以下是我们的社区介绍,欢迎各种合作、交流、学习:)

image

100个JavaScript特效实战案例详解 htmltable {th, td {th {pre {简介:“JavaScript特效100例”是一份涵盖多种网页视觉效果与交互功能的实用编程资源,通过HTML、CSS和JavaScript结合实现丰富的前端动态效果。内容包括图片拖拉缩放、原始尺寸查看、分裂复制动画、放大镜预览、随机广告展示、圆角图片处理、相册浏览功能及文字滚动控制等典型应用场景。这些特效不仅提升网页美观度与用户参与感,也深入涉及事件监听、DOM操作、Canvas绘图、CSS动画控制等核心技术。 阅读详情

相关推荐

javascript100个小例子

这个是100个javascript小例子 各种效果 操作表单页面等小例子 很有用 项目中直接copy就可以用 同样学习javascript的更合适用这些来学习

详细的JavaScript知识梳理和经典的一百个例题,让你掌握JavaScript

这里先做一下JavaScript知识点的梳理,具体的可领取资料 JavaScript语法: js语法.png DOM操作: DOM操作.png 数据类型 面向对象 继承 闭包 插件 作用域 跨域 原型链 模块化 自定义事件 内存泄漏 事件机制 异步装载回调 模板引擎 JSON ajax 面向对象.png JavaScript...

qq_43623970的博客 1653

JavaScript-Example-100:100个JavaScript实战案例,适合初学者系统学习

1.基础部分(20个) 1.1图片切换 1.2模拟上传文件判断 1.3 QQ好友列表 1.4开灯关灯 1.5网易云课堂拖放菜单 1.6百度登录 1.7模拟QQ聊天 1.8网易选项卡切换 1.9拖拽原理 1.10可进行QQ聊天 1.11数码时钟 1.12图片自动播放 1.13京东轮播 1.14模拟滚动条 1.15购物车应用 1.16表单验证 1.17创建文件夹 1.18放大镜 1.19控制盒子方向 1.20贪吃蛇游戏 2.面向对象部分(10个) 2.1面向对象基础知识 2.2面向对象写选项卡 2.3面向对象写拖拽 2.4封装弹窗组件 2.5天猫放大镜效果 2.6封装树形菜单 2.7照片墙效果 2.8封装工具库 2.9封装时间日期组件 2.10百叶窗 3三角函数部分(5个) 3.1实现苹果菜单 3.2三角函数,二次运动 3.3反三角函数和流媒体应用 3.4圆的碰撞 3.5 3D标签云 4. j

javascript使用100例一

(001)获取 url 中的参数 要求指定参数名称,返回该参数的值 或者 空字符串 不指定参数名称,返回全部的参数对象 或者 {} 如果存在多个同名参数,则返回数组 输入例子:getUrlParam('http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe', 'key')输出例子:['1', '2', '3']代码实现function ge

华仔而立的博客 3779

ARM Cortex平台NEON指令集优化实战指南

本文为ARM Cortex平台开发者提供了一份全面的NEON指令集优化实战指南。文章从NEON的SIMD架构原理讲起,详细介绍了开发环境搭建、NEON内联函数与自动向量化两种核心编程方法、关键数据类型与指令,并通过图像饱和运算、矩阵乘法等实战案例,深入解析了性能调优技巧与常见避坑指南,旨在帮助开发者充分释放ARM处理器的并行计算潜力。

weixin_29162439的博客 260

Halcon图片拼接避坑指南:特征点匹配常见问题与解决方案

本文深入解析Halcon图片拼接中特征点匹配的常见问题与解决方案,涵盖特征点提取、匹配优化及变换模型选择等关键环节。针对工业视觉检测中的拼接错位、重影等问题,提供参数调优、图像预处理和算法选择等实战技巧,帮助开发者高效避坑并提升拼接精度。

weixin_28694169的博客 199

Web3应用架构(DApp应用架构)

Web3应用架构

weixin_45976751的博客 1358

伯德图详解:从传递函数到系统稳定性的频域分析

在自动控制与控制系统设计中,理解系统对不同频率输入信号的响应特性,是分析和设计稳定系统的核心基础。频率响应描述了系统对正弦输入的幅值增益与相位变化规律,而伯德图作为最直观的频域分析工具,通过对数坐标将宽频带特性压缩成一条清晰曲线,让工程师无需复杂计算即可快速评估系统性能。从典型环节的渐近线绘制,到相位裕度、幅值裕度的读取,伯德图贯穿了系统稳定性判断、控制器参数整定及噪声抑制等关键场景。本文结合实际调试经验,系统讲解伯德图的绘制原理与读图方法,帮助读者快速掌握从传递函数到工程应用的核心技能。

weixin_34535286的博客 343

JavaScript基础——JS简单案例

JS基础案例

m0_68794863的博客 5966

CVPR 2027 投稿规划:基于近3年录用率与截稿周期的5步时间管理法

本文为计算机视觉研究者提供CVPR 2027投稿的完整规划指南,基于近三年录用率与截稿周期数据,提出五步时间管理法。涵盖选题策略、实验设计、论文写作、同行评审到最终提交的全流程优化,特别针对CVPR日益激烈的竞争环境(2024年投稿量达11532篇,录取率仅23.6%)提供实用解决方案,帮助研究者提升投稿成功率。

weixin_34079177的博客 1165

6轴机械臂(拟人臂+球形腕(三轴相交于一点))正逆运动学求解

1、DH坐标下机械臂参数 theta=[pi/10,pi/2,pi/4,-pi/4,pi/4,-pi/8];%关节角度 a=[0, 0.260, 0.025, 0, 0, 0];%连杆长度 d=[0, 0, 0, 0.280, 0, 0.072];%偏移距离 alpha=[pi/2, 0, pi/2, -pi/2 , pi/2, 0];%RBR型6轴机械臂 使用...

qq_33374294的博客 7885

JS小案例总结(JS基础案例)

JS小案例总结JS小案例总结案例一:JS实现tab选项卡功能案例二:JS实现盒子拖拽功能案例三:JS实现导航条吸顶效果案例四:JS实现图片懒加载结构案例五:JS实现简易弹幕功能案例六:JS实现自动滚动新闻列表 JS小案例总结 案例一:JS实现tab选项卡功能 描述:纯原生js实现选项卡切换的效果,即当鼠标移入某个选项卡区域时,显示不同的内容。 HTML代码如下: <body> <div id="tabs"> <div id="options">

a_l_f_的博客 8686

一文读懂 SAP ERP / SAP S/4HANA 里的 Price List:概念、配置、定价流程与可运行 ABAP 示例

SAP ERP/S4HANA中的Price List解析 本文系统阐述了SAP定价体系中Price List的核心概念和实现机制。Price List并非独立的价目表,而是通过条件技术(条件类型、访问序列、条件记录)与Price List Type(PLTYP)共同作用的定价维度。文章详细说明了: Price List本质上是客户主数据中的PLTYP字段,作为定价查找键使用 定价流程中条件访问序列如何利用PLTYP查找特定价格 S4HANA与ECC版本在价格维护入口的差异 实际业务中如何通过不同PLTYP实

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 663

区块链DAPP-基于Truffle框架的宠物商店

1.业务背景 Pete有一个宠物店(Pete's Pet Shop),该商店在给定时间可以容纳16只宠物,并且已经有了宠物数据。他希望基于Truffle框架开发一个完全去中心化应用,让大家来领养宠物。 2.环境准备 安装Node:下载地址https://nodejs.org/en/download/ 安装Truffle :npm install -g truffle 安装ganache-cli:npm install -g ganache-cli 注意:Node、Truffle、ganach.

ytsm04的专栏 3710

VTK 显示大量点云数据及交互(点云拾取、着色、测量等)功能

VTK (Visualization Toolkit) 是一个强大的开源可视化库,非常适合处理点云数据。下面将介绍如何使用 VTK 显示大量点云数据,并实现点云拾取、着色、测量等功能。

深之JohnChen的专栏 1997

【Windows Server 2019】发布服务器 | 远程桌面服务的安装与配置 Ⅰ——理论,实验拓扑和安装基于RemoteAPP的RDS

博客介绍了Windows Server中远程桌面服务的理论,实验拓扑以及基于RemoteAPP的RDS安装。博文介绍了如何在Windows Server上部署发布服务器。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 6129

区块链开发工具大全:Blockchain for Software Engineers推荐的Truffle、Ganache和IPFS终极指南 [特殊字符]

在当今快速发展的区块链技术领域,掌握正确的开发工具是成功的关键。Blockchain for Software Engineers项目为软件工程师们精心整理了一套完整的区块链开发工具资源,特别是以太坊生态中的三大核心工具:Truffle、Ganache和IPFS。这些工具能够帮助开发者从零开始构建去中心化应用(DApp),大大提升开发效率和代码质量。 ## 📊 为什么需要专业的区块链开发工具?

gitblog_00457的博客 1007

jre9下载 jdk9

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

HiBlock区块链技术布道:Learning blockchain together

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34261415的博客 370

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

js数组方法讲解大全,不够用你找我

javascript数组方法大全,麻麻再也不担心我的数组了~

skk的博客 1010

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

如何构建一个DApp:完整的DApp架构

在Web3产业中,它们指的是DApp开发者用来发送请求和接收来自区块链节点响应的特定JSON-RPC,这让它成为与智能合约交互的关键元素。如果您来自传统的Web开发背景,智能合约的用意旨在取代后端,但需要注意的是:用户必须拥有原生Token(GLMR、MOVR、DEV等)才能发出状态更改请求,存储信息可能会很昂贵,并且。然后部署它并打印生成的智能合约的地址。是一个为DApp设计基于Ethers.js的React框架,通过提供一套全面的钩子和组件来简化构建DApp前端的过程以及以太坊区块链功能的集成。

白马区块Crypto100 2501

JS中的函数解释和小技巧

1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的I

阿古的专栏 1340

js常用基础案例整理(持续更新)

这里写目录标题一级目录二级目录三级目录036-网页日历035-记住用户名(js代码)034-基础轮播图(js代码)033-京东放大镜效果(js代码)032-简单动画函数封装031-仿淘宝固定侧边栏+返回顶部按钮030-拖动的模态框029-发送短信倒计时案例028-倒计时效果027-模拟京东快递单号查询案例026-模拟京东按键输入内容025-跟随鼠标移动的小人024-动态生成表格案例023-删除留言案例022-新浪下拉菜单021-Tab栏切换(仿京东)020-全选与反选019-表格隔行变色018-开关灯效果0

weixin_41086056的博客 1万+

JavaScript 理论与实践 【目录 】

前端的开发离不开使用javascript,js是一门非常重要而且很灵活复杂的语言。本文是一个目录列表,方便查找一些经典的示例,能够快捷的应用的实际的开发中。文章是不断的增加,本目录也在不断的更新中,哪天能达到100个,就先庆祝一下~

大剑师兰特的GIS世界 1161

JS常用数组方法&实例(干货一箩筐)

1.unshift在数组的最前面添加 (1) 参数:一个或多个 (2) 返回值:新数组的长度 (3) 改变原数组 let ary = [1,2,3,4,5]; console.log(ary.unshift(0)); //6 console.log(ary); //[0,1,2,3,4,5] 2.shift删除数组第一...

bingbingjia的博客 524
上一篇: 区块链100讲:从宠物商店案例看DAPP架构和WEB3.JS交互接口
下一篇: 区块链最大的难题和不同解决方案的剖析
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值