JavaScript是一种基于对象的编程语言,基于对象指的是所有的对象已经由浏览器提供好了,用户直接使用就可以了。

另外,JS是嵌入在HTML语法之中的编程语言。

PS:虽然是基于对象的语言,但是在编写代码的过程中,尽量按照面向对面的要求书写代码。

输出语法:

document.write():向页面输出HTML代码。虽然JavaScript定义在HTML页面中,但是它却可以控制HTML代码的输出。document.write()函数输出的HTML代码不能控制元素的顺序,所以在开发之中不会使用此函数输出HTML代码。

在开发中往往使用console.log()来进行代码输出,来进行页面调试

变量:

Js定义变量,是根据赋予的内容来决定变量类型。

例如,可以像下面那样声明并初始化数组:

var result = new Array();//声明数组: 
result[0]=”hello”;
result[1]=100;
result=false;

PS:本操作没有严格之处,最大的好处是没有长度限制,动态数组。(当然也可以静态初始化,new数组时直接初始化)当然在开发中一般不会使用new关键字声明数组。实际在定义js变量的时候也可以不使用var进行定义,这样的是全局变量,当然一般并不使用。

函数:

function 函数名称(参数){//不需要返回值类型,如果需要返回,直接return,参数也可以不写var

}

PS:在学习java的时候,方法有几个形参,调用的时候实参个数必须相同,可是JavaScript没有这种限制,

如add(10)依旧调用函数add(x,y):

function add(x,y){
  return x+y;
  }
alert(add(10))//调用

所以为了用户的操作,JavaScript提供了一个功能,函数名称.arguments:表示取得函数的参数的内容,返回的是一个数组。可以使用length判断长度。

function add(x,y){
   switch(add.arguments.length){
       case 0:return 0;
       case 1:return x;
       case 2:return x+y;
}
alert(add(10))//调用

PS:但是在实际工作中,还是强烈建议语法严格,函数里面定义几个参数,调用时就传几个参数, 尽量不出现以上情形。(规范)

事件处理:

在页面上任何的操作都可能称为事件源,而对于每一个事件都可以进行自定义的处理方式。  例如,页面加载,鼠标移动等等都可以称它为事件源。所有的事件在JavaScript里面都是以”onXXX”的形式命名。

举例如下两个事件(这两个事件只能够在”<body>”元素里面进行处理):

页面加载事件: onload

页面的卸载事件:onunload

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>demo</title>
<script type="text/javascript">
   function loadHandle(){
   alert("页面加载");
   }
   function closeHandle(){
   alert("再见");
   }
</script>
</head>
<body onload="loadHandle();" onunload="closeHandle();">
</body>
</html>

发现浏览器打开页面时出现”页面加载”,关闭页面时显示”再见”

范例在表格中当鼠标移入新的一行时,改变当前行的颜色:

原理:JS是一个基于对象的编程语言,每一个HTML元素都是一个对象 ,也就是说每一个元素,例如”<tr>”、”<td>”都属于一个JS对象。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>demo</title>
<script type="text/javascript">
   function changeColor(obj,color){
   //修改当前行元素
     obj.bgColor=color;//由外部决定颜色。
   }
</script>
</head>
<body>
   <table border="1" bgColor="red">
       <tr onmousemove="changeColor(this,'white');"><td>demo1</td></tr>
       <tr onmousemove="changeColor(this,'white');"><td>demo2</td></tr> 
       <tr onmousemove="changeColor(this,'white');"><td>demo3</td></tr>
   </table>
</body>
</html>

总结:javascript取得的所有html元素都是对象。(基于对面编程语言)Java属于面向对象的编程语言,面向对象过程之中,需要由用户自己定义类,产生对象,但是JavaScript是一种基于对象的编程语言,即:所有的对象都已经由浏览器自动为用户提供好了,用户直接使用即可,最典型的对象:每一个HTML元素都是一个对象 。(如:<html><head><body>)所有HTML定义的时候要想轻松的取得指定元素,必须加上有ID属性,作为唯一标记 。

JavaScript事件之动态绑定事件(开发中使用最多)

但是需要注意,所有的事件除了采用以上“onXXX”的方式之外也可以动态设置,这种形式在开发之中是使用最多的。那么可以使用 addEventListener(事件类型,处理函数名称,触发时机) 进行动态设置。

PS:触发时机都会设置为false,表示在事件的触发过程进行处理。

范例:观察动态设置

之前这么写:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>demo</title>
<script type="text/javascript">
   function handler(){
    alert('hello');
   }
</script>
</head>
<body onload="handler();">
</body>
</html>

动态绑定事件:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>demo</title>
<script type="text/javascript">
   function handler(){
     alert('hello');
   }
   //以下表示是在页面加载的时候进行加载事件的处理
   window.onload=function(){//匿名函数
      handler()
   }
</script>
</head>
<body>
</body>
</html>

所有的动态设置的事件都可以在onload里面进行动态的配置。但是如果要配置,那么必须能够取得一个明确的元素对象。可以使用docuent.getElementById(元素Id)的操作方式取得元素对象。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>demo</title>
<script type="text/javascript">
    function handler(){
     alert("hello");
    }
   //以下表示是在页面加载的时候进行加载事件的处理
   window.onload=function(){//匿名函数
   var imgElement = document.getElementById("myimg");//取得mying元素的对象,每一个元素都是对象
   imgElement.addEventListener("click", handler, false);
   }
</script>
</head>
<body>
     <!-- id是整个js的操作核心所在,必须存在 -->
     <img id="myimg" src="my.jpg" height="50%">
</body>
</html>

这种动态设置操作事件的最大好处在于,HTML代码不会和JavaScript代码混合在一起。

PS:innerHTML方法:在此元素内增加指定内容,而且内容可以是HTML代码。

setTimeout方法练习:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>demo</title>
</head>
<body>
   <div id="info">hello</div>
  <script type="text/javascript">
  function setClock(){
  var date = new Date();
  var info = document.getElementById("info");
  info.innerHTML="<h1>当前时间"+date+"</h1>";
  setTimeout(setClock,1000); //每一秒更新一次 
    }
  setClock();
</script>
</body>
</html>

实例:轮播图

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>demo</title>
</head>
<body>
  <span id="info">
     <img id="img" src="data:images/a.jpg" height="250px" width="250px">
  </span>
  <script type="text/javascript">
     var imgName = new Array("a.jpg","b.jpg","c.jpg")
     var foot = 0;//操作的脚标
     function lunbo(){
      var img = document.getElementById("img");
      img.src="data:images/"+imgName[foot++];
      if(foot>=imgName.length){
      foot=0;
      }
      setTimeout(lunbo, 1000);//每一秒更新一次
     }
     lunbo();
  </script>
</body>
</html>

JavaScript基础总结三部曲之一的更多相关文章

  1. 第五模块:WEB开发基础 第2章·JavaScript基础

    01-JavaScript的历史发展过程 02-js的引入方式和输出 03-命名规范和变量的声明定义 04-五种基本数据类型 05-运算符 06-字符串处理 07-数据类型转换 08-流程控制语句if ...

  2. JavaScript基础

    JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...

  3. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  4. 前端之JavaScript基础

    前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...

  5. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  6. Javascript基础回顾 之(三) 面向对象

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  7. Javascript基础回顾 之(二) 作用域

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  8. Javascript基础回顾 之(一) 类型

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  9. JavaScript 基础回顾——对象

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

随机推荐

  1. 斯坦福大学 iOS 开发公开课总结

     斯坦福大学 iOS 开发公开课总结   前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 "iPhone 开发公开课 " 了.此公开课在以前叫做<iPho ...

  2. Stack and Heap 堆和栈的区别

    在和计算机内存打交道时,我们一定会碰到堆和栈,这两个东西很容易搞混,那么现在就来梳理一下二者的关系. 栈是用来静态分配内存的而堆是动态分配内存的,它们都是存在于计算机内存之中. 栈的分配是在程序编译的 ...

  3. shell中的函数、数组

    函数定义: 数组:

  4. UVA 796 Critical Links(Tarjan求桥)

    题目是PDF就没截图了 这题似乎没有重边,若有重边的话这两点任意一条边都不是桥,跟求割点类似的原理 代码: #include <stdio.h> #include <bits/std ...

  5. 前端编码规范(2)—— HTML 规范

    HTML 规范 文档类型 推荐使用 HTML5 的文档类型申明: <!DOCTYPE html>. (建议使用 text/html 格式的 HTML.避免使用 XHTML.XHTML 以及 ...

  6. 【转】bShare分享插件的使用

    原文地址:http://blog.csdn.net/pan_junbiao/article/details/17884203 1.引用JS文件 分享标签: 1.class="bshare-c ...

  7. PHP 错误与异常 笔记与总结(13 )自定义异常类

    针对不同的异常,进行不同的处理,可以通过自定义异常类记录特定的异常信息来处理不同类型的异常.自定义异常类通过继承基类(Exception),对基类进行扩展. 自定义异常类 <?php heade ...

  8. PHP 开发 APP 接口 学习笔记与总结 - Redis 缓存

    Redis 可以定期将数据备份到磁盘中(持久化),同时不仅仅支持简单的key/value 类型的数据,同时还提供list,set,hash等数据结构的存储:Memcache 只是简单的key/valu ...

  9. centos 使用pip安装mysql-python

    直接使用# pip install mysql-python 命令报 EnvironmentError: mysql_config not found 错误 安装mysql-phthon 需要用的my ...

  10. QT5中文显示