(day03)javascript(特点+js语法+js数据类型和对象+运算符+dom编程)

2019.08.02(day03)

js:
    变量
    数组
    api
    完成对html页面中的节点元素/属性节点/文本节点做增删改查
    原生的js写法
    jquery js写法

javascript:


   简称js
   javascript是嵌入html中在浏览器中运行的脚本语言
   js跟java和c没有任何关系,只是语法相似
   是一种网页的编程技术,用来向html页面添加交互行为
   直接嵌入html页面
   由浏览器解释执行代码,不进行预编译
 
javascript特点:
-可以用任何编辑文本的工具编写js代码
-由浏览器内置的javascript引擎执行代码
   解释执行:事先不编译,逐行执行
   基于对象:内置大量的现成的对象   
-适宜:
   客户端的数据计算
   客户端的表单验证
   浏览器的事件触发
   网页特效制作
   服务器的异步提交 ajax 
   
如何引入js:
三种方式:
1.把js代码写在html的某个标签中
 <input type="button" value="点一下" οnclick="alert('哈哈')" />


2.把js代码写在html文件中<head>元素中的<script>标记中
 这样的<script>标记,在head中可以出现多次
 <script>可以写在任意位置,但是推荐放在<head>中
 <head>
    <script type="text/javascript" language="javascript">
      function aa(){
        alert("哈哈")
      }
    </script>
 </head>
 在body体中
 <input type="button" value="再点一下" οnclick="aa();" />

3.把js代码写在专门的js文件中
  test.js
  文件内容:
  function bb(){
    alert("哈哈 bb方法");
  }

  在html文件中的head元素中引入js文件
  在html的head元素中中可以引入多个js文件
  但每个script标记只能引入一个js文件
  demo3.html
  <head>
  <script src="test.js" ></script>
  
  </head>
  在body体中
 <input type="button" value="再点一下" οnclick="bb();" />

js的语法
js的注释
:
  单行  //
  多行 /**/
js代码区分大小写,大小写敏感
所有js语句用分号结束
标识符和关键字:
标识符的定义:可以包含字母,数字,下划线,$符号,就是不能用数字开头
命名的规范用骆驼(驼峰)命名法

变量:
  js变量声明用var定义
  比如:
     var i=3;i="abc";

     
js的数据类型:


-特殊类型  null 空  ,  undefined  未定义
-内置对象(类型)
  Number  数字
  String  字符串
  Boolean  布尔
  Function 函数
  Array   数组
-外置对象:
  window对象:浏览器对象
  document对象:文档对象
-自定义对象: Object对象

String类型:
  用双引和单引都可以标记js的字符串
  转义字符:\n  \\  \"   \'
Number类型:
  不区分整型数据和浮点型数据
  var k=3;
  k=3.3;
  所有的数字都采用64位浮点格式存储,类似于double格式
Boolean类型:
  只有两个值 true和false
  可以自动转换作为数值参与运算,运算时true=1,false=0
  
js属于松散类型的程序语言(弱类型)
变量在声明时不需要指定数据类型
变量所引用的数据就是这个变量的类型
  数字+字符串     字符串
  数字+布尔       数字,true=1,false=0
  字符串+布尔     字符串,把true和false转成字符串
  布尔+布尔        数字

数据类型的转换函数
toString() 将所有数据类型转换为String类型
parseInt() 强制转换成整数,如果不转换,则返回NaN(not a number)
  parseInt("5.5"); //结果5
parseFloat() 强制转换成浮点数,不能转换返回NaN
  parseFloat("5.5");//结果5.5
typeof() 查询当前的数据类型
  typeof("test"+10);//返回String
isNaN()  是否不是一个数字

特殊的数据类型
  null 在程序中代表的是"无值"或"无对象"
       可以给一个变量赋值为null,相当于清除变量的内容
  undefined   声明了变量但从未赋值
              对象属性不存在

运算符:
算术运算符
关系运算符
逻辑运算符
三元运算符    

js流程控制:
顺序结构
选择分支结构  if else    switch case
循环结构 for while do while

js中有关表达式真假值问题:
  0           false
  null        false
  ""          false
  undefined   false
  NaN         false
  一切表示空的值都是false
  非空值      true

  
js中的一些对象(api)
 -内置对象
 -外部对象
   window对象
   document对象
 -自定义对象

常用的内置对象
  String对象
  Number对象
  Boolean对象
  Array对象
  Math对象
  Date对象
  RegExp对象
  Function对象  
  
String对象
  var str="abc";
  var str1=new String("abc");

length属性:取字符串的长度
   console.log(str.length);
方法:
  str.toLowerCase();//转小写
  str.toUpperCase();//转大写
  str.charAt(2);//返回指定位置的字符
  str.charCodeAt(2);//返回指定位置的字符的unicode编码
  str.indexOf(findstr,[index]);从index位置开始拿findstr去str寻找
                               找到了返回位置,没找到-1
  str.lastIndexOf(findstr,[index]);
  str.substring(start,[end]);返回子字符串;
  str.substr(start,length);返回子字符串;
  str.replace(findstr,tostr);在str中寻找findstr,找到后用tostr替换
                           返回值换后的字符串
  str.split(bystr[,howmany]);
      bystr:分隔的字符串
      howmany 指定返回的数组的最大长度,可以省略
      返回值是分割后的字符串数组
  
  
Number对象:是数值对象
 创建Number对象
 var mynum=12.567;
 
 toFixed(num)转换为字符串,并保留小数点后一位数
             如果必要,该数字会被舍入,也可以用0补充

    var num=23.56789;
    console.log(num.toFixed(2));//23.57
    
    var num1=23.5;
    console.log(num.toFixed(2));//23.50
  
Array对象
  创建数组对象
   var arr1=new Array();
   var arr2=new Array(10);
   var arr3=new Array(100,"abc",true);
   var arr4=[100,"200",true];
  
  数组对象的属性
    arr.length;返回数组的长度
  
  创建二维数组:
  var arr5=[
              [1,"2",3],
              [true,"abc"],
              [12.567]
           ];
           
  var arr6=new Array();
  arr6[0]=new Array();
  
数组的方法:
  arr.reverse() 翻转,改变了源数组 
  数组的排序:
  arr.sort([sortFunc]);数组排序
  var arr=[32,12,111,444];
  arr.sort();
  console.log(arr.toString());//111,12,32,444;
  
  arr.sort(sortFunction);
  console.log(arr.toString());//12,32,111,444;
  function sortFunction(a,b){
     return a-b;
  }

for in 循环 
var x
var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"

for (x in mycars)
{
    document.write(mycars[x] + "<br />")
}

Math对象:
  Math.PI   Math.E  Math.round(3.567);
  Math.sin(x)....
  Math.sqrt(x)...
  Math.abs(x)...
  Math.random()

Date对象:用于处理日期和时间,封装系统时间毫秒数
  创建对象:
    var now=new Date();
    var now1=new Date("2017/9/14 11:27");
  读写时间毫秒数
   getTime(),setTime();
  读写时间分量
   getDate()  getDay()  getFullYear()
   setDate()  setDay()  setFullYear()
  转换日期为字符串
   toString()
   toLocaleTimeString();
   toLocaleDateString();

RegExp对象
  创建对象:
   var regexp=/pattern/flags;
   var regexp1=new RegExp("pattern"[,flags]);
   
  flags:
    g:设定当前匹配为全局模式
    i:忽略匹配中的大小写检测
    
  比如:
     var reg1=/^\d{3,6}$/;
     var reg12=new RedExp("^\d{3,6}$");
     
  匹配正则表达式的方法
  reg1.test(string)
    如果字符串string中含有与reg1对象匹配的文本,返回true
    否则返回false;
  
  var name="aaaa";
  var reg=new RegExp("^[a-zA-Z0-9]{3,6}$")
  var flag=reg.test(name);
  
  reg1.replace(regexp,tostr);//按照正则规则寻找,找到后替换为toStr
  reg1.match(regext);//返回匹配字符串数组
  reg1.search(regext);//返回匹配字符串的首字符的位置索引

函数对象:
js中的函数就是Function对象
函数的名称就指向Function对象的引用
  定以一个函数
  function 函数名称(函数的的参数){
    函数体
    return 返回值;
  }
  
  函数的返回值,如果没有return 就是默认返回undefined
               如果有return,就return后边的数据,且一个数据
  
  函数参数的说明:
    js中没有函数重载
    调用时只要函数名一样,无论传入多少个参数,
    调用都是一个函数
    没有接收到实参的参数值是undefined
    所有的参数传递给arguments数组对象,可以重新更改赋值
    函数的参数不能加var

匿名函数:
  var func=function(arg1,arg2...){
      函数体
      return 返回值
  }
  
  比如:
  var add=function(a,b){
    return a+b;
  };
  
  console.log(add(1,2));//3
  console.log(add);//输出的函数的文本

有关函数的一个特殊用法
使用Function对象直接创建函数
 var func=new Function(arg1,arg2...,functionbody);
 比如:
    var add=new Function("x","y","return (x+y);");
    var result=add(1,2);
    console.log(result);//3
    console.log(add);//方法的文本
      
全局函数:
 parseInt()   parseFloat()  isNaN()
 eval();
 
 eval函数用于计算表达式字符串,或者用于执行字符串中js代码
 
 只能接受原始字符串做为参数
 如果参数中没有合法的表达和语句,则抛出异常
 
 var s="2+3";
 eval(s);//5
 
外部对象:
BOM对象  browser object model浏览器对象模型,用来访问跟
         浏览器窗口有关的对象
    在BOM对象对象有很多的对象,每个对象还有很多属性和方法
    通过这些方法和属性,移动窗口,更改状态栏文本,
    和其他跟窗口操作相关的.
 
DOM对象: Document Object model文档对象模型,用来操作文档
         定义了访问和操作html文档的标准方法
         应用程序通过对dom树的操作,来实现和html的交互

window对象:
  window表示浏览器窗口
  是所有javascript全局对象,如果不写window,默认从window访问起
  
  window常用的属性:
    -document:在窗口中显示文档树.
    -history:浏览器的窗口的后退和前进
    -location:窗口文件地址对象.
       window.location.href="login.html";
    -screen:当前屏幕对象
    -navigator:浏览器的相关信息
    
window对象常用的方法:
  alert();弹出式窗口,模态框(当前窗口不关闭,无法操作后面的窗口)
  confirm();模态框,确认窗口
  setTimeOut()  setInterval() 周期性函数
  clearTimeOut()  clearInterval();
  
定时器:用于网页动态时钟,制作倒计时等周期性操作

 周期性时钟:以一定的时间间隔执行代码,循环往复
 一次性时钟:在一个设定的时间间隔之后来执行代码,
            而不是调用时立即执行

 
 setInterval(exp,time);周期性触发代码exp
 exp:执行的语句
 time:时间周期,单位毫秒
 返回值是已经启动的定时器对象
 clearInterval(setInterval的返回值);停止启动的定时器
 
 setTimeout(exp,time);一次性触发代码exp
   exp:执行js代码
   time:间隔时间,单位毫秒
   返回值是已经启动的定时器对象
 clearTimeOut(setTimeout的返回值);//停止启动的定时器

screen对象包含有关客户端显示屏幕的信息
  常用于获取屏幕的分辨率和色彩
  常用的属性:
  -width/height
  -avaiWidth/avaiHeight

history对象:包含用户在浏览器窗口中,访问过的url
  -length属性
  方法:
  -back()
  -forward()
  -go(num)
  
location对象:包含有关url的信息
  href属性:给地址栏赋值新地址
  window.location.href="xxx.html";

navigator对象:包含的是浏览器的信息
  常用语获取客户端浏览器和操作系统信息
  

dom编程:
查询:
  -通过id查询
  -通过name查询
  -通过标签名查询
  -通过表单名查询

根据id查询
   document.getElementById("");
   通过id查询返回元素节点,
   在整个html文档中搜索id
   只找到第一个id,返回元素
   如果id错误,返回null

根据层次查询节点:
 -parentNode
   遵循文档的上下文层次结构,查找单个父节点
   比如:
       <table id="tblid">
         <tr>
            <td id="tdid"></td>
            <td></td>
         </tr>
       </table>
    var td_ele=document.getElementById("tdid");
    var tr_ele=td_ele.parentNode;
    var table_ele=td_ele.parentNode.parentNode;

  -childNodes
     遵循文档的上下文层次结构,查找多个子节点
     比如:上面的例子
      var td_ele=document.getElementById("tdid");
      //获取当前td对象的所有兄弟
      var tds_ele=td_ele.parentNode.childNodes;      
      //获取当前td的父亲,和所有叔叔节点
      var trs_ele=td_ele.parentNode.parentNode.childNodes;

根据标签名查询节点:
    getElementsByTagName("标签名");
    从当前对象往下寻找符合标签名的所有元素对象
    返回结果是一个数组
    标签名错误,返回长度为0,
    比如:
       <table id="tblid">
         <tr>
            <td id="tdid"></td>
            <td></td>
         </tr>
       </table>
       
    var table_ele=document.getElementById("tblid");
    var trs_ele=table_ele.getElementsByTagName("tr");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值