爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      web入门之十 JS高级编程基础

      首页 知识中心 软件开发 文章详情页

      web入门之十 JS高级编程基础

      2022-12-19 11:21:44 阅读次数:217

      json,javascript,div,eval

      学习内容

       

      •  JavaScript函数
      •  JavaScript类和对象
      •  解析JSON数据 

      能力目标

       

      •  深入了解JavaScript函数
      •  熟悉JavaScript面向对象编程
      •  熟练进行JSON数据解析

      本章简介

      自JavaScript诞生以来,其功能由最初简单地实现客户端有效性验证发展到构建丰富的用户界面效果,始终从用户角度提升体验效果。前面我们已经学习了JavaScript的基础理论知识,包括其语法、变量、函数、事件、数组及BOM / DOM对象,可以顺利地进行前端开发。但是,JavaScript还有一些高级技术需要我们了解和掌握,像类、对象、匿名函数、JSON等,本章将学习这些知识。

       

      核心技能部分

      1.1 JavaScript回顾

      JavaScript是一种基于对象和事件驱动的脚本语言,由浏览器负责解释、执行。JavaScript分为三大部分:ECMAScript、BOM和DOM。

      web入门之十 JS高级编程基础

      ECMAScript是核心,包括语法、变量和数据类型、运算符、逻辑控制语句、关键字和保留字等。BOM即浏览器对象模型,DOM即文档对象模型。

      web入门之十 JS高级编程基础web入门之十 JS高级编程基础

       

      1.2 函数

      JavaScript的核心是函数,大部分的业务逻辑和数据处理都需要交给函数来实现。JavaScript函数分为命名函数、匿名函数、内部函数和回调函数等。

      1.2.1 命名函数

      命名函数,顾名思义就是该函数有名字,我们需要通过函数名来调用这个函数。创建命名函数的语法如下所示:

      语法

      function函数名(参数列表){

          执行语句

          return返回值;

      }

      下面使用命名函数实现一个打招呼的简单例子,参考代码如下所示。

      示例1.1

       

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.1</title>
      </head>
      <script>
      function sayHello(name)
      {
              alert("hello," + name);
      }
      </script>
      <body οnlοad="sayHello('Jack')">
      </body>
      </html>


       

      上述代码定义了一个名字叫sayHello的函数,并在页面的加载事件中调用了该函数。在前面学习JavaScript时,我们写的其实都是命名函数。

      与C#、Java等语言相比,JavaScript函数的参数更具有灵活性,具体表现在以下几个方面:

       函数即使声明了参数,调用时也可以不给参数传值。

       函数被调用时将自动创建一个arguments隐含对象,负责管理参数。

       参数和返回值可以是任何类型。

       函数可以不需要return语句返回值,没有return语句时函数的返回值是undefined。

      arguments是函数的隐含对象,调用函数时传递的参数值都默认封装到了该对象(数组)中。下面通过一个示例演示arguments隐含对象的用法,参考代码如示例1.2所示。

      示例1.2

       

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.2</title>
      </head>
      <body>
      <script type="text/javascript">
      function fnArgs(){
          var result = '';
          for (var i = 0; i < arguments.length; i++){
              result += arguments[i] + ',';
          }
      result = result.substring(0, result.length - 1);
          return result;            
      }               
      alert('为fnArgs()函数传递的参数的值是:' + fnArgs(3, '郑州', 3.14));
      </script>
      </body>
      </html>

      web入门之十 JS高级编程基础

       

      上述代码定义了一个名字是fnArgs的无参函数,在调用该函数时传递了3个值示。

      1.2.2 匿名函数

      在JavaScript中,函数可以没有名字,称之为匿名函数。下面通过一个示例来演示匿名函数的用法,参考代码如下所示。

      示例1.3

       

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.3</title>
      </head>
      <body>
      </body>
      </html>
      <script>
      //创建匿名函数
      var fn=function(){
      return a+b;
      };
      //通过变量名调用匿名函数
      var a=10,b=20;
      alert(fn(a,b));
      </script>


       

      上述代码在使用function关键字创建函数时并没有给函数命名,而是把函数赋值给一个变量,通过该变量来调用函数。

       web入门之十 JS高级编程基础

      在JavaScript中,可以把某个函数定义在另一个函数内,称之为内部函数。内部函数可以出现在命名函数里,也可以出现在匿名函数中。

      下面通过一个示例来演示内部函数的用法,参考代码如下所示。

      示例1.4

       

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.4</title>
      </head>
      <body>
      </body>
      </html>
      <script>
      //在命名函数中创建内部函数
      function sayHello(name)
      {
      function temp(){
      alert("hello,"+name);
      }
      temp();
      }
      //调用
      sayHello("Jack");


      //在匿名函数中创建内部函数

      var func=function(){
      return function(){
      alert("函数返回值是一个内部函数");
      }
      };
      //调用
      func()();
      </script>

      上述代码分别在命名函数和匿名函数中创建了内部函数。对于命名函数中的内部函数来说,定义和调用都需要放在命名函数内。对于匿名函数中的内部函数来说,由于函数没名字,所以在定义内部函数的同时就需要使用return关键字把这个函数返回。另外,在调用匿名内部函数时,需要两个()。

      1.2.4 回调函数

      回调即CallBack,它不是JavaScript语言特有的,属于一种编程设计,早在C语言中就已经出现了。通常情况下,当我们需要调用某个类或类的方法时会这样编写代码:

      Obj o=new Obj();   //创建Obj类的对象

      o.m1();             //调用m1方法

      m1方法在编译期已经确定,开发人员知道运行时会执行什么代码,这就是我们经常说的“调用”,即Call。但有的时候Call并不能满足业务需求,我们需要“回调”,即CallBack,下面是一个回调的例子。

       

      示例1.5
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.5</title>
      </head>
      <body>
      <script>
      function test(name,cb){
      document.write(name+"在"+cb());
      }
      function cb1(){
      return "吃饭";
      }
      function cb2(){
      return "学习";
      }
      test("张三丰",cb1);
      </script>
      </body>
      </html>
      web入门之十 JS高级编程基础

       

      上述代码定义了三个函数,在调用test函数时,把cb1或cb2函数作为参数进行传递

      web入门之十 JS高级编程基础

      test函数在编译期无法确定接下来执行什么代码,它将变得非常灵活,传过来什么函数就执行什么代码。BOM中的定时器setTimeOut和setInterval函数采用的就是回调函数的设计,因为定时器在编译期无法确定将来会调用什么函数、执行什么代码。

       

      1.3 JavaScript面向对象编程基础

      JavaScript是基于对象的解释性语言,所有数据都是对象。在JavaScript中并没有class的概念,但是可以通过对象和类的模拟来实现面向对象编程。

      1.3.1 类的模拟

      ECMAScript内置了几种引用类型:Object、Boolean、Number、String。其实JavaScript也支持自定义类型。ECMAScript最令人感兴趣的可能莫过于函数实际上就是功能完整的类,所以我们可以使用函数来实现类的模拟。

      类是自定义类型,只有定义后才能用于创建对象。在JavaScript中没有class,但可以通过使用关键字function和this定义类模板。具体语法如下所示:

      语法

      function 类名 (参数1, 参数2, … 参数n)

      {

         this.属性名=参数1;

         this.属性名=参数n;

         this.方法名=function(){ };

         ... ...

      }

      下面是通过function自定义一个类的例子,参考代码如下所示。

      示例1.6
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.6</title>
      </head>
      <body>
      <script>
      function Teacher(n,s,a){
      this.name=n;
      this.sex=s;
      this.age=a;
      this.getDetails=function(){
      document.write('教员的姓名:'+this.name+'<br>教员的性别:'+this.sex+'<br>
                教员的年龄:'+this.age);
      }
      }
      //创建对象
      var tea=new Teacher('Mary','女',25);
      //调用方法
      tea.getDetails();
      </script>
      </body>
      </html>
      web入门之十 JS高级编程基础

       

      上述代码首先使用function模拟定义了一个教员类,并通过this关键字定义了该类的一些属性和方法,然后通过new关键字创建了教员类的一个对象,并调用了该对象的getDetails方法。

      1.3.2 对象

      在JavaScript中,对象被定义为无序属性的集合,属性可以是任何类型的值,包括其他对象或函数。函数作为属性值时称为“方法”,即对象的行为。

      在JavaScript中,使用new关键字调用构造函数创建对象。

      语法

      var 对象名 = new 构造函数();

      对象的属性都通过“.”运算符访问。如果访问值是null对象的属性,将出现空引用错误。与普通变量函数相同,对象的属性可以动态生成。将某个属性值设置为null表示删除该属性;在函数内部的对象,函数执行完毕后将自动释放所占用的资源;在函数外部定义的对象,将其设置为null后、垃圾收集器将释放其占用的资源。

      JavaScript还提供了一些内置对象,我们需要了解一下,主要有 Object、Function、Array、String、Date、RegExp、Math、Error等。

      Ø Object 对象:它是所有对象的基础,其他所有对象都从Object对象扩展而来,这一切都通过原型实现。原型是对象的一个属性,即prototype。Prototype本身是一个对象,每个对象都具有此属性。JavaScript 中每个对象本身都不包含具体的属性(但可以动态添加),而是通过原型进行属性的共享。当获取一个对象的属性时,系统首先检测对象是否直接包含该属性,如果不包含则从原型属性中查找;如果仍未找到,则返回 undefined。

      关于原型的内容会在后面做详细介绍。

      Ø Function对象:我们经常编写的函数也是对象(JavaScript 中一切皆对象),所以当使用 function 关键字定义函数时,实际上是在系统内部创建了一个 Function 对象。以下语法是等价的:

          var  函数名 =new Function(形参1,形参2,…,形参n,函数体);

      function  函数名(形参1,形参2,…,形参n)(函数体;}

      上述语法中,前一种方式直接调用构造函数创建 Function 对象,后一种方式使用 function 关键字定义函数对象。

      Ø Error对象:在JavaScript中,代码在运行时会产生异常对象Error对象,并且可以作为参数传递给catch子句进行处理,也可以使用new关键字创建自定义的Error对象。该对象有一个message属性用来获得系统异常提示信息。JavaScript中的异常处理跟Java类似,语法如下所示:

      语法

      <script>

      try{

           //代码

      }

      catch(e) {     //e就是产生的异常对象Error

          //处理

      }

      finally{

         //代码

      }

      </script>

      下面我们通过一个例子来演示JavaScript异常处理和Error对象的使用。

      web入门之十 JS高级编程基础

      示例1.7

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.7</title>
      </head>
      <body>
      <script>
      try
      {
      document.getElementById("vtn").value="test";
      }
      catch(e)
      {
      alert(e.message+"\n对象不存在");
      }
      </script>
      </body>
      </html>
      由于页面上没有id是vtn的元素,所以上述代码在运行时会发生异常,运行效果如图1.1.9所示。
       
      图1.1.9  异常处理
      除了系统抛出异常外,开发人员也可以根据业务需求人工抛出异常,例如下面的代码。
      示例1.8
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.8</title>
      </head>
      <body>
      请输入分数(百分制):<input type="text" id="vtn" οnblur="check()"/>
      <script>
      function check()
      {
      try
      {
      var score=parseFloat(document.getElementById("vtn").value);
      if(score<0||score>100)
      throw new Error("成绩输入错误");
      }
      catch(e)
      {
      alert(e.message);
      }
      }
      </script>
      </body>
      </html>

       

      当用户输入的成绩不在0~100之间时,上述代码生成了一个Error对象并使用throw关键字进行了抛出,运行效果如图1.1.10所示。

       web入门之十 JS高级编程基础

      图1.1.10  抛出异常

      1.4  JavaScript处理JSON格式数据

      1.4.1 JSON

      JSON即JavaScript Object Notation,是JavaScript对象原生的一种表示形式。它是一种轻量级的、纯文本的,用来存储、传递和交换文本信息,类似于XML,但是比XML更小、更快、更容易解析。

      JSON的语法规则如下所示:

      var  对象名 = {

      属性1 : 属性值,

      属性2 : 属性值,

      函数 :  function(){

      //代码

      }

          ... ...

      };

      属性的值可以是:

       数字(整数或浮点数)

       字符串(必须放在双引号中)

       布尔值

       null

      下面我们通过一个例子来演示JSON的用法,参考代码如下所示。

      示例1.9

       

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.9</title>
      </head>
      <body>
      <script>
      var student= {
      name:"",
      age:56,
      address:"河南省郑州市",
      sayHello:function()
      {
      alert("大家好,我是"+this.name);
      }
      };
      student.name="张无忌";
      student.sayHello();
      </script></body>
      </html>

      上述代码使用JSON创建了一个名字是student的对象,包括3个属性和一个函数。 

      web入门之十 JS高级编程基础

      JSON也可以以数组的形式一次存储多个对象,语法如下所示:

      var 对象数组名 =  [

      { 属性1 : 属性值 , 属性2 : 属性值 },

      { 属性1 : 属性值 , 属性2 : 属性值 },

      { 属性1 : 属性值 , 属性2 : 属性值 }... ...

      ];

      下面通过一个例子演示使用JSON存储多个员工的写法,参考代码如下所示。

      示例1.10

       

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.10</title>
      </head>
      <body>
      <script>
      var employees = [
      { firstName:"Bill" , lastName:"Gates" },
      { firstName:"George" , lastName:"Bush" },
      { firstName:"Thomas" , lastName: "Carter" }
      ];
      alert("一共有"+employees.length+"个员工:\n"+employees[0].firstName+"\n"+employees[1].firstName+
      "\n"+employees[2].firstName);
      </script>
      </body>
      </html>

      上述代码通过JSON以数组的形式创建了3个员工对象,在获取这些对象的信息时需要通过下标。

      web入门之十 JS高级编程基础 

       

      1.4.2 解析JSON

      JSON 最常见的用法是Web服务器把从数据库中读取出来的数据转换成JSON格式的字符串,然后输出到客户端,这时客户端就需要把JSON格式的字符串转换为JavaScript对象,然后在网页中才能使用这些数据。

      在客户端解析JSON格式字符串的方式有两种:

       eval函数

       JSON解析器,即JSON . parse ( )

      eval函数使用的是JavaScript编译器,所以能够执行任何JavaScript代码,包括解析JSON 字符串。在使用的时候必须把文本包围在一对小括号中,这样才能避免语法错误。

      语法

      eval( "(" + JSON字符串 + ")" );

      下面通过一个例子来演示如何使用eval来解析JSON字符串,参考代码如下所示。

      示例1.11

       

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.11</title>
      </head>
      <body>
      <script>
       	//假设JsonText是从Web服务器端返回的JSON格式的字符串
      var JsonText='{"persons":[{"name":"jordan","sex":"m","age":"40"},
                                          {"name":"bryant","sex":"m","age":"28"}]}';
      var myjson = eval("("+JsonText+")");
      document.writeln('转换后的JSON对象:' + myjson);
      document.writeln('<br>myjson[0].name=' + myjson.persons[0].name);
      </script>
      </body>
      </html>

      上述代码使用eval函数把一个JSON格式的字符串解析成了一个对象,并输出了相关信息。

       web入门之十 JS高级编程基础

       

      虽然eval函数可以解析JSON格式的字符串,但是建议开发人员要慎用此函数,因为该函数可以编译和执行任何JavaScript代码,存在安全隐患。

      使用JSON解析器(parse函数)将JSON字符串解析为JavaScript对象是更安全的做法。JSON解析器只能识别JSON 文本,而不会编译脚本。较新的浏览器和最新的ECMAScript标准中均包含了原生的对JSON的支持,见表

      浏览器支持

      JS库(框架)支持

      Firefox (Mozilla) 3.5

      jQuery

      Internet Explorer 8

      Yahoo UI

      Chrome

      Prototype

      Opera 10

      Dojo

      Safari 4

      ECMAScript 1.5

      下面通过一个示例来演示JSON解析器的用法,参考代码如下所示。

      示例1.12

       

      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>示例1.12</title>
      </head>
      <body>
      <script>
       //假设JsonText是从Web服务器端返回的JSON格式的字符串
      var JsonText='{"persons":[{"name":"jordan","sex":"m","age":"40"},
                                          {"name":"bryant","sex":"m","age":"28"}]}';
      var myData = JSON.parse(JsonText);
      document.writeln('<br>转换后的JSON对象:' + myData);
      document.writeln('<br>myData[1].name=' + myData.persons[1].name);
      </script>
      </body>
      </html>

      上述代码使用JSON解析器的parse方法把一个JSON格式的字符串解析成了一个对象,并输出了相关信息。

      web入门之十 JS高级编程基础 

      经过测试,JSON解析器在Firefox 、Chrome等浏览器上均能正常使用。

      本章总结

      本章主要学习了三方面的内容:函数、面向对象编程基础和处理JSON格式数据。函数包括命名函数、匿名函数、内部函数和回调函数,其中命名函数和匿名函数使用较多。面向对象基础部分讲解了最简单的类的模拟和对象的创建,为后续课程的学习进行铺垫。JavaScript处理JSON数据要求大家必须熟练掌握,这在实际开发中应用频繁。

       

       

      任务实训部分

      1:实现简易计算器

      训练技能点

       面向对象编程

       函数的定义和调用

      需求说明

      使用面向对象的编程思想实现简易计算器,首先自定义一个计算器类,包括两个属

          性:需要进行运算的第一个数和第二个数;定义四个方法分别实现加、减、乘、除

          运算。

      web入门之十 JS高级编程基础

      实现步骤

      (1)实现简易计算器界面

      (2)自定义计算器类,参考代码如下所示。

      function Cal()

      {

      this.num1=0;

      this.num2=0;

       

      this.jia=function(){

      return this.num1+this.num2;

      };

      this.jian=function(){

      return this.num1-this.num2;

      };

      this.cheng=function(){

      return this.num1*this.num2;

      };

      this.chu=function(){

      return this.num1/this.num2;

      };

      }

      (3)在【计算】按钮的单击事件中创建一个计算器类的对象并调用相应的方法实现计

      算功能

      2:客户类

      训练技能点

       类的定义

       对象的使用

      需求说明

           先定义一个Customer类,属性:姓名、性别、年龄和电话;方法:客户消费;然

           后创建对象并调用方法进行测试。

      3:解析JSON数据

      训练技能点

       JavaScript解析JSON

      需求说明

            定义一个JSON对象,存储3个学生信息(姓名、性别、成绩);并逐行输出该

            3个学生的所有信息。

      4:解析JSON数据

      训练技能点

       JavaScript解析JSON

      需求说明

      定义一个JSON对象,存储3个省份信息;再定义三个JSON对象,存储三个省份

      对应的城市信息。把省份信息和城市信息分别填充到两个下拉列表框中,并实现

      级联特效。

      实现步骤

      (1)实现省市级联界面

      (2)定义一个JSON对象存储省份信息,参考代码如下所示。

      var p= [

      { pname:"河南省" , pvalue:"hn" },

      { pname:"广东省" , pvalue:"gd" },

      { pname:"山东省" , pvalue: "sd" }

      ];

      (3)定义三个JSON对象存储城市信息

      (4)在页面加载时把JSON对象填充到两个下拉列表框中,部分参考代码如下所示。

      for(var j=0;j<p.length;j++)

      {

      var op=new Option(p[j].pname,p[j].pvalue);

      document.getElementById("province").options.add(op);

      }

      (5)省份下拉列表框发生改变时实现级联效果

       

      巩固练习

      一、选择题

      1. 以下关于JavaScript的说法正确的是()。

      A. JavaScript中的函数都是有名字的,否则无法调用

      B. JavaScript和Java一样使用class关键字定义类

      C. JavaScript中没有类的概念,但是可以通过函数进行模拟

      D. BOM和DOM是一样的,叫法不同而已

      2. 以下关于JavaScript函数的说法正确的是()。

      A. 在调用函数时,必须匹配函数参数的个数、类型

      B. 函数可以有返回值,也可以没有返回值

      C. 内部函数必须定义在命名函数里,否则无法调用

      D. 回调函数是JavaScript独有的一种设计

      3. 以下关于JavaScript面向对象编程的说法错误的是()。

      A. JavaScript不支持自定义数据类型

      B. JavaScript使用new创建对象

      C. JavaScript中的函数也是对象

      D. JavaScript不支持异常处理

      4. 下列关于JSON说法错误的是()。

      A. JSON是一种数据存储格式

      B. JSON是Java原生对象

      C. JSON一次只能存储单个对象 

      二、上机练习

       定义一个JSON数组存储3本图书信息,包括图书名、作者和价格,然后使用JavaScript进行解析并输出所有的图书信息。

       

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/teayear/3187229,作者:跟张哥学编程,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:极客编程python入门-迭代器

      下一篇:jdk源码_String(1)

      相关文章

      2025-05-14 10:33:25

      webpack5基础--01_基本使用

      webpack5基础--01_基本使用

      2025-05-14 10:33:25
      json , main , package , Webpack , 打包 , 文件 , 编译
      2025-05-14 10:33:16

      30天拿下Python之使用Json

      Json的英文全称为JavaScript Object Notation,中文为JavaScript对象表示法,是一种存储和交换文本信息的语法,类似XML。Json作为轻量级的文本数据交换格式,比XML更小、更快,更易解析,也更易于阅读和编写。

      2025-05-14 10:33:16
      json , Json , Python , 字符串 , 对象 , 序列化 , 转换
      2025-05-14 09:51:15

      python json反序列化为对象

      在Python中,将JSON数据反序列化为对象通常意味着将JSON格式的字符串转换为一个Python的数据结构(如列表、字典)或者一个自定义的类实例。

      2025-05-14 09:51:15
      json , JSON , Person , Python , 列表 , 字典 , 实例
      2025-05-12 08:40:18

      DataTable转JSON

      DataTable转JSON

      2025-05-12 08:40:18
      dataset , DataTable , json , JSON
      2025-05-06 09:21:03

      【报错问题】终端npm error code ENOENT npm error syscall open npm error path /Users/c c/Downloads/636/pac

      【报错问题】终端npm error code ENOENT npm error syscall open npm error path /Users/c c/Downloads/636/pac

      2025-05-06 09:21:03
      json , npm , package
      2025-04-22 09:40:08

      【ETL工具】kettle 程序报错 Javascript error: TypeError: Cannot call method “trim“ of null

      【ETL工具】kettle 程序报错 Javascript error: TypeError: Cannot call method “trim“ of null

      2025-04-22 09:40:08
      java , javascript , org
      2025-04-15 09:19:26

      变量进阶_变量实践_嵌套变量

      变量进阶_变量实践_嵌套变量

      2025-04-15 09:19:26
      eval , 变量 , 基础知识 , 实践 , 嵌套
      2025-04-14 08:45:36

      一段诡异的JavaScript代码,其实考察的是一些JavaScript的基础知识

      一段诡异的JavaScript代码,其实考察的是一些JavaScript的基础知识

      2025-04-14 08:45:36
      html , javascript
      2025-04-09 09:13:27

      【DoraBox实战】————6、代码执行分析与研究

      【DoraBox实战】————6、代码执行分析与研究

      2025-04-09 09:13:27
      array , eval , func , user , 函数
      2025-04-09 09:13:17

      python性能测试之pyperformance

      python性能测试之pyperformance

      2025-04-09 09:13:17
      json , python , Python , 性能 , 文档 , 测试
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5238441

      查看更多

      最新文章

      30天拿下Python之使用Json

      2025-05-14 10:33:16

      python json反序列化为对象

      2025-05-14 09:51:15

      DataTable转JSON

      2025-05-12 08:40:18

      【ETL工具】kettle 程序报错 Javascript error: TypeError: Cannot call method “trim“ of null

      2025-04-22 09:40:08

      一段诡异的JavaScript代码,其实考察的是一些JavaScript的基础知识

      2025-04-14 08:45:36

      【DoraBox实战】————6、代码执行分析与研究

      2025-04-09 09:13:27

      查看更多

      热门文章

      MySQL 5.7 JSON函数学习

      2023-04-27 08:00:00

      java构建一个格式稍微复杂点的JSON对象附查看json格式的小工具

      2023-05-10 06:02:06

      SpringMVC的JSON处理及FastJSON的整合使用(七)

      2022-12-27 10:00:39

      PHP:将list列表转为tree树形数据

      2023-02-28 08:23:26

      html:canvas画布绘图简单入门

      2023-02-20 10:15:01

      Go 语言入门很简单 -- Go 语言解析JSON #私藏项目实操分享#

      2023-04-19 09:23:13

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      前端-vue基础38-侦听器的用户案例

      JavaScript定时器示例

      大学解惑09 - 单独用HTML javascript CSS 实现三版99乘法表,你就是班里最靓的仔

      前端项目实战131-前端校验

      数据结构17-十进制转二进制代码3

      js面试题-1:检查是否存在重复元素

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号