python自动华 (十五)

python

本节内容

  • CSS
  • javascript
  • dom 

CSS

position标签

  • fixed: 固定在页面的某个位置
  • relative + absolute: 相对定位

opacity:0.5 设置透明度

z-index:数值大的在上边

overflow: hidden 超过div的宽度后隐藏 auto 出现滚动条

hover: 当鼠标移动到当前标签上时才生效

background-image:url(‘1.jpg’)  #默认 div大,图片水平放置

background-repeat:no-repeat  #不重复堆叠 repeat-x:水平堆叠  repeat-y:垂直放

background-position-x:默认是0

background-position-y:默认是0

或者background-position:10px 10px

或者background里直接把所有参数值都写上,如下图:

  

JavaScript

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

一、如何编写

1、JavaScript代码存在形式

1 <!-- 方式一 -->

2 <script type"text/javascript" src="JS文件"></script>

3

4 <!-- 方式二 -->

5 <script type"text/javascript">

6 Js代码内容

7 </script>

View Code

2、JavaScript代码存放位置

    • HTML的head中
    • HTML的body代码块底部(推荐)

由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。

<script src="https://www.gstatic.com/og/_/js/k=og.og2.en_US.iF4jnkQuaf0.O/rt=j/t=zcms/m=def/exm=in,fot/d=1/ed=1/rs=AA2YrTv5-POC4Ks9GtGRdY2ywUWisqz7-Q"></script>

<script>

alert('123');

</script>

View Code

二、变量

JavaScript中变量的声明是一个非常容易出错的点,局部变量必须一个 var 开头,如果未使用var,则默认表示声明的是全局变量。

 1 <script type="text/javascript">

2

3 // 全局变量

4 name = 'seven';

5

6 function func(){

7 // 局部变量

8 var age = 18;

9

10 // 全局变量

11 gender = "男"

12 }

13 </script>

View Code

JavaScript中代码注释:

    • 单行 //
    • 多行 /*  */

注意:此注释仅在Script块中生效。

三、数据类型

JavaScript 中的数据类型分为原始类型和对象类型:

    • 原始类型

      • 数字
      • 字符串
      • 布尔值

    • 对象类型

      • 数组
      • “字典”
      • ...

特别的,数字、布尔值、null、undefined、字符串是不可变。

// null、undefined

null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。

undefined是一个特殊值,表示变量未定义。

View Code

1、数字(Number)

JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。

转换:

    • parseInt(..)    将某值转换成数字,不成功则NaN
    • parseFloat(..) 将某值转换成浮点数,不成功则NaN

特殊值:

    •  NaN,非数字。可使用 isNaN(num) 来判断。
    • Infinity,无穷大。可使用 isFinite(num) 来判断。

更多数值计算:

常量

Math.E

常量e,自然对数的底数。

Math.LN10

10的自然对数。

Math.LN2

2的自然对数。

Math.LOG10E

以10为底的e的对数。

Math.LOG2E

以2为底的e的对数。

Math.PI

常量figs/U03C0.gif。

Math.SQRT1_2

2的平方根除以1。

Math.SQRT2

2的平方根。

静态函数

Math.abs( )

计算绝对值。

Math.acos( )

计算反余弦值。

Math.asin( )

计算反正弦值。

Math.atan( )

计算反正切值。

Math.atan2( )

计算从X轴到一个点的角度。

Math.ceil( )

对一个数上舍入。

Math.cos( )

计算余弦值。

Math.exp( )

计算e的指数。

Math.floor( )

对一个数下舍人。

Math.log( )

计算自然对数。

Math.max( )

返回两个数中较大的一个。

Math.min( )

返回两个数中较小的一个。

Math.pow( )

计算xy。

Math.random( )

计算一个随机数。

Math.round( )

舍入为最接近的整数。

Math.sin( )

计算正弦值。

Math.sqrt( )

计算平方根。

Math.tan( )

计算正切值。

Math

View Code

2、字符串(String)

字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。

常见功能:

 1 obj.length                           长度

2

3 obj.trim() 移除空白

4 obj.trimLeft()

5 obj.trimRight)

6 obj.charAt(n) 返回字符串中的第n个字符

7 obj.concat(value, ...) 拼接

8 obj.indexOf(substring,start) 子序列位置

9 obj.lastIndexOf(substring,start) 子序列位置

10 obj.substring(from, to) 根据索引获取子序列

11 obj.slice(start, end) 切片

12 obj.toLowerCase() 大写

13 obj.toUpperCase() 小写

14 obj.split(delimiter, limit) 分割

15 obj.search(regexp) 从头开始匹配,返回匹配成功的第一个位置(g无效)

16 obj.match(regexp) 全局搜索,如果正则中有g表示找到全部,否则只找到第一个。

17 obj.replace(regexp, replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项,

18 $数字:匹配的第n个组内容;

19 $&:当前匹配的内容;

20 $`:位于匹配子串左侧的文本;

21 $':位于匹配子串右侧的文本

22 $$:直接量$符号

View Code

3、布尔类型(Boolean)

布尔类型仅包含真假,与Python不同的是其首字母小写。

    • ==      比较值相等
    • !=       不等于
    • ===   比较值和类型相等
    • !===  不等于
    • ||        或
    • &&      且

4、数组

JavaScript中的数组类似于Python中的列表

常见功能:

 1 obj.length          数组的大小

2

3 obj.push(ele) 尾部追加元素

4 obj.pop() 尾部获取一个元素

5 obj.unshift(ele) 头部插入元素

6 obj.shift() 头部移除元素

7 obj.splice(start, deleteCount, value, ...) 插入、删除或替换数组的元素

8 obj.splice(n,0,val) 指定位置插入元素

9 obj.splice(n,1,val) 指定位置替换元素

10 obj.splice(n,1) 指定位置删除元素

11 obj.slice( ) 切片

12 obj.reverse( ) 反转

13 obj.join(sep) 将数组元素连接起来以构建一个字符串

14 obj.concat(val,..) 连接数组

15 obj.sort( ) 对数组元素进行排序

View Code

四、其他

1、序列化

    • JSON.stringify(obj)   序列化
    • JSON.parse(str)        反序列化

2、转义

    • decodeURI( )                   URl中未转义的字符
    • decodeURIComponent( )   URI组件中的未转义字符
    • encodeURI( )                   URI中的转义字符
    • encodeURIComponent( )   转义URI组件中的字符
    • escape( )                         对字符串转义
    • unescape( )                     给转义字符串解码
    • URIError                         由URl的编码和解码方法抛出

3、eval

JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值。

    • eval() 
    • EvalError   执行字符串中的JavaScript代码

4、正则表达式

1、定义正则表达式

    • /.../  用于定义正则表达式
    • /.../g 表示全局匹配
    • /.../i 表示不区分大小写
    • /.../m 表示多行匹配
      JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)

1 var pattern = /^Java\w*/gm;

2 var text = "JavaScript is more fun than \nJavaEE or JavaBeans!";

3 result = pattern.exec(text)

4 result = pattern.exec(text)

5 result = pattern.exec(text)

View Code

注:定义正则表达式也可以  reg= new RegExp()

2、匹配

JavaScript中支持正则表达式,其主要提供了两个功能:

    • test(string)     检查字符串中是否和正则匹配

  

n = 'uui99sdf'

reg = /\d+/

reg.test(n) ---> true

# 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$

View Code

    • exec(string)    获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。 

  

获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。

非全局模式

获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)

var pattern = /\bJava\w*\b/;

var text = "JavaScript is more fun than Java or JavaBeans!";

result = pattern.exec(text)

var pattern = /\b(Java)\w*\b/;

var text = "JavaScript is more fun than Java or JavaBeans!";

result = pattern.exec(text)

全局模式

需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕

var pattern = /\bJava\w*\b/g;

var text = "JavaScript is more fun than Java or JavaBeans!";

result = pattern.exec(text)

var pattern = /\b(Java)\w*\b/g;

var text = "JavaScript is more fun than Java or JavaBeans!";

result = pattern.exec(text)

View Code

3、字符串中相关方法

  

obj.search(regexp)                   获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)

obj.match(regexp) 获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部

obj.replace(regexp, replacement) 替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,

$数字:匹配的第n个组内容;

$&:当前匹配的内容;

$`:位于匹配子串左侧的文本;

$':位于匹配子串右侧的文本

$$:直接量$符号

View Code

  

5、时间处理

JavaScript中提供了时间相关的操作,时间操作中分为两种时间:

    • 时间统一时间
    • 本地时间(东8区)

更多操作参见:http://www.shouce.ren/api/javascript/main.html

五、语句和异常

1、条件语句

JavaScript中支持两个中条件语句,分别是:if 和 switch

    if(条件){

}else if(条件){

}else{

}

if

   switch(name){

case '1':

age = 123;

break;

case '2':

age = 456;

break;

default :

age = 777;

}

switch

2、循环语句

JavaScript中支持三种循环语句,分别是:

var names = ["alex", "tony", "rain"];

for(var i=0;i<names.length;i++){

console.log(i);

console.log(names[i]);

}

方式一

var names = ["alex", "tony", "rain"];

for(var index in names){

console.log(index);

console.log(names[index]);

}

方式二

方式三

3、异常处理

 1 try {

2 //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行

3 }

4 catch (e) {

5 // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。

6 //e是一个局部变量,用来指向Error对象或者其他抛出的对象

7 }

8 finally {

9 //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。

10 }

View Code

注:主动跑出异常 throw Error('xxxx')

六、函数

1、基本函数

JavaScript中函数基本上可以分为一下三类:

 1 // 普通函数

2 function func(arg){

3 return true;

4 }

5

6 // 匿名函数

7 var func = function(arg){

8 return "tony";

9 }

10

11 // 自执行函数

12 (function(arg){

13 console.log(arg);

14 })('123')

View Code

注意:对于JavaScript中函数参数,实际参数的个数可能小于形式参数的个数,函数内的特殊值arguments中封装了所有实际参数。

2、作用域

JavaScript中每个函数都有自己的作用域,当出现函数嵌套时,就出现了作用域链。当内层函数使用变量时,会根据作用域链从内到外一层层的循环,如果不存在,则异常。

切记:所有的作用域在创建函数且未执行时候就已经存在。

 1 function f2(){

2 var arg= 111;

3 function f3(){

4 console.log(arg);

5 }

6

7 return f3;

8 }

9

10 ret = f2();

11 ret();

View Code

View Code

注:声明提前,在JavaScript引擎“预编译”时进行。

更多:http://www.cnblogs.com/wupeiqi/p/5649402.html

3、闭包

闭包是指可以包含自由(未绑定到特定对象)变量的代码块。

「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」

由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。

 1 function f2(){

2 var arg= [11,22];

3 function f3(){

4 return arg;

5 }

6 return f3;

7 }

8

9 ret = f2();

10 ret();

View Code

4、面向对象

 1 function Foo (name,age) {

2 this.Name = name;

3 this.Age = age;

4 this.Func = function(arg){

5 return this.Name + arg;

6 }

7 }

8

9 var obj = new Foo('alex', 18);

10 var ret = obj.Func("sb");

11 console.log(ret);

View Code

对于上述代码需要注意:

    • Foo充当的构造函数
    • this代指对象
    • 创建对象时需要使用 new

上述代码中每个对象中均保存了一个相同的Func函数,从而浪费内存。使用原型和可以解决该问题:

 1 function Foo (name,age) {

2 this.Name = name;

3 this.Age = age;

4 }

5 Foo.prototype = {

6 GetInfo: function(){

7 return this.Name + this.Age

8 },

9 Func : function(arg){

10 return this.Name + arg;

11 }

View Code

DOM

文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。

一、查找元素

1、直接查找

document.getElementById             根据ID获取一个标签

document.getElementsByName 根据name属性获取标签集合

document.getElementsByClassName 根据class属性获取标签集合

document.getElementsByTagName 根据标签名获取标签集合

View Code

2、间接查找

parentNode          // 父节点

childNodes // 所有子节点

firstChild // 第一个子节点

lastChild // 最后一个子节点

nextSibling // 下一个兄弟节点

previousSibling // 上一个兄弟节点

parentElement // 父节点标签元素

children // 所有子标签

firstElementChild // 第一个子标签元素

lastElementChild // 最后一个子标签元素

nextElementtSibling // 下一个兄弟标签元素

previousElementSibling // 上一个兄弟标签元素

View Code

二、操作

1、内容

innerText   文本

outerText

innerHTML HTML内容

innerHTML

value 值

View Code

2、属性

attributes                // 获取所有标签属性

setAttribute(key,value) // 设置标签属性

getAttribute(key) // 获取指定标签属性

/*

var atr = document.createAttribute("class");

atr.nodeValue="democlass";

document.getElementById('n1').setAttributeNode(atr);

*/

View Code

 1 <!DOCTYPE html>

2 <html>

3 <head lang="en">

4 <meta charset="UTF-8">

5 <title></title>

6 </head>

7 <body>

8 <input type="button" value="全选" onclick="CheckAll();"/>

9 <input type="button" value="取消" onclick="CancelAll();"/>

10 <input type="button" value="反选" onclick="ReverseCheck();"/>

11

12 <table border="1" >

13 <thead>

14

15 </thead>

16 <tbody >

17 <tr>

18 <td><input type="checkbox" /></td>

19 <td>111</td>

20 <td>222</td>

21 </tr>

22 <tr>

23 <td><input type="checkbox" /></td>

24 <td>111</td>

25 <td>222</td>

26 </tr>

27 <tr>

28 <td><input type="checkbox" /></td>

29 <td>111</td>

30 <td>222</td>

31 </tr>

32 <tr>

33 <td><input type="checkbox" /></td>

34 <td>111</td>

35 <td>222</td>

36 </tr>

37 </tbody>

38 </table>

39 <script>

40 function CheckAll(ths){

41 var tb = document.getElementById('tb');

42 var trs = tb.childNodes;

43 for(var i =0; i<trs.length; i++){

44

45 var current_tr = trs[i];

46 if(current_tr.nodeType==1){

47 var inp = current_tr.firstElementChild.getElementsByTagName('input')[0];

48 inp.checked = true;

49 }

50 }

51 }

52

53 function CancelAll(ths){

54 var tb = document.getElementById('tb');

55 var trs = tb.childNodes;

56 for(var i =0; i<trs.length; i++){

57

58 var current_tr = trs[i];

59 if(current_tr.nodeType==1){

60 var inp = current_tr.firstElementChild.getElementsByTagName('input')[0];

61 inp.checked = false;

62 }

63 }

64 }

65

66 function ReverseCheck(ths){

67 var tb = document.getElementById('tb');

68 var trs = tb.childNodes;

69 for(var i =0; i<trs.length; i++){

70 var current_tr = trs[i];

71 if(current_tr.nodeType==1){

72 var inp = current_tr.firstElementChild.getElementsByTagName('input')[0];

73 if(inp.checked){

74 inp.checked = false;

75 }else{

76 inp.checked = true;

77 }

78 }

79 }

80 }

81

82 </script>

83 </body>

84 </html>

View Code

3、class操作

className                // 获取所有类名

classList.remove(cls) // 删除指定类

classList.add(cls) // 添加类

View Code

4、标签操作

a.创建标签

// 方式一

var tag = document.createElement('a')

tag.innerText = "wupeiqi"

tag.className = "c1"

tag.href = "http://www.cnblogs.com/wupeiqi"

// 方式二

var tag = "<a class='c1' href='http://www.cnblogs.com/wupeiqi'>wupeiqi</a>"

View Code

b.操作标签

// 方式一

var obj = "<input type='text' />";

xxx.insertAdjacentHTML("beforeEnd",obj);

xxx.insertAdjacentElement('afterBegin',document.createElement('p'))

//注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'

// 方式二

var tag = document.createElement('a')

xxx.appendChild(tag)

xxx.insertBefore(tag,xxx[1])

View Code

实例:

<!DOCTYPE html>

<html>

<head>

<meta charset='utf-8' />

<title></title>

<style>

.gray{

color:gray;

}

.black{

color:black;

}

</style>

<script type="text/javascript">

function Enter(){

var id= document.getElementById("tip")

id.className = 'black';

if(id.value=='请输入关键字'||id.value.trim()==''){

id.value = ''

}

}

function Leave(){

var id= document.getElementById("tip")

var val = id.value;

if(val.length==0||id.value.trim()==''){

id.value = '请输入关键字'

id.className = 'gray';

}else{

id.className = 'black';

}

}

</script>

</head>

<body>

<input type='text' class='gray' id='tip' value='请输入关键字' onfocus='Enter();' onblur='Leave();'/>

</body>

</html>

搜索框

跑马灯

本节内容

  • CSS
  • javascript
  • dom 

CSS

position标签

  • fixed: 固定在页面的某个位置
  • relative + absolute: 相对定位

opacity:0.5 设置透明度

z-index:数值大的在上边

overflow: hidden 超过div的宽度后隐藏 auto 出现滚动条

hover: 当鼠标移动到当前标签上时才生效

background-image:url(‘1.jpg’)  #默认 div大,图片水平放置

background-repeat:no-repeat  #不重复堆叠 repeat-x:水平堆叠  repeat-y:垂直放

background-position-x:默认是0

background-position-y:默认是0

或者background-position:10px 10px

或者background里直接把所有参数值都写上,如下图:

  

JavaScript

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

一、如何编写

1、JavaScript代码存在形式

1 <!-- 方式一 -->

2 <script type"text/javascript" src="JS文件"></script>

3

4 <!-- 方式二 -->

5 <script type"text/javascript">

6 Js代码内容

7 </script>

View Code

2、JavaScript代码存放位置

    • HTML的head中
    • HTML的body代码块底部(推荐)

由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。

<script src="https://www.gstatic.com/og/_/js/k=og.og2.en_US.iF4jnkQuaf0.O/rt=j/t=zcms/m=def/exm=in,fot/d=1/ed=1/rs=AA2YrTv5-POC4Ks9GtGRdY2ywUWisqz7-Q"></script>

<script>

alert('123');

</script>

View Code

二、变量

JavaScript中变量的声明是一个非常容易出错的点,局部变量必须一个 var 开头,如果未使用var,则默认表示声明的是全局变量。

 1 <script type="text/javascript">

2

3 // 全局变量

4 name = 'seven';

5

6 function func(){

7 // 局部变量

8 var age = 18;

9

10 // 全局变量

11 gender = "男"

12 }

13 </script>

View Code

JavaScript中代码注释:

    • 单行 //
    • 多行 /*  */

注意:此注释仅在Script块中生效。

三、数据类型

JavaScript 中的数据类型分为原始类型和对象类型:

    • 原始类型

      • 数字
      • 字符串
      • 布尔值

    • 对象类型

      • 数组
      • “字典”
      • ...

特别的,数字、布尔值、null、undefined、字符串是不可变。

// null、undefined

null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。

undefined是一个特殊值,表示变量未定义。

View Code

1、数字(Number)

JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。

转换:

    • parseInt(..)    将某值转换成数字,不成功则NaN
    • parseFloat(..) 将某值转换成浮点数,不成功则NaN

特殊值:

    •  NaN,非数字。可使用 isNaN(num) 来判断。
    • Infinity,无穷大。可使用 isFinite(num) 来判断。

更多数值计算:

常量

Math.E

常量e,自然对数的底数。

Math.LN10

10的自然对数。

Math.LN2

2的自然对数。

Math.LOG10E

以10为底的e的对数。

Math.LOG2E

以2为底的e的对数。

Math.PI

常量figs/U03C0.gif。

Math.SQRT1_2

2的平方根除以1。

Math.SQRT2

2的平方根。

静态函数

Math.abs( )

计算绝对值。

Math.acos( )

计算反余弦值。

Math.asin( )

计算反正弦值。

Math.atan( )

计算反正切值。

Math.atan2( )

计算从X轴到一个点的角度。

Math.ceil( )

对一个数上舍入。

Math.cos( )

计算余弦值。

Math.exp( )

计算e的指数。

Math.floor( )

对一个数下舍人。

Math.log( )

计算自然对数。

Math.max( )

返回两个数中较大的一个。

Math.min( )

返回两个数中较小的一个。

Math.pow( )

计算xy。

Math.random( )

计算一个随机数。

Math.round( )

舍入为最接近的整数。

Math.sin( )

计算正弦值。

Math.sqrt( )

计算平方根。

Math.tan( )

计算正切值。

Math

View Code

2、字符串(String)

字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。

常见功能:

 1 obj.length                           长度

2

3 obj.trim() 移除空白

4 obj.trimLeft()

5 obj.trimRight)

6 obj.charAt(n) 返回字符串中的第n个字符

7 obj.concat(value, ...) 拼接

8 obj.indexOf(substring,start) 子序列位置

9 obj.lastIndexOf(substring,start) 子序列位置

10 obj.substring(from, to) 根据索引获取子序列

11 obj.slice(start, end) 切片

12 obj.toLowerCase() 大写

13 obj.toUpperCase() 小写

14 obj.split(delimiter, limit) 分割

15 obj.search(regexp) 从头开始匹配,返回匹配成功的第一个位置(g无效)

16 obj.match(regexp) 全局搜索,如果正则中有g表示找到全部,否则只找到第一个。

17 obj.replace(regexp, replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项,

18 $数字:匹配的第n个组内容;

19 $&:当前匹配的内容;

20 $`:位于匹配子串左侧的文本;

21 $':位于匹配子串右侧的文本

22 $$:直接量$符号

View Code

3、布尔类型(Boolean)

布尔类型仅包含真假,与Python不同的是其首字母小写。

    • ==      比较值相等
    • !=       不等于
    • ===   比较值和类型相等
    • !===  不等于
    • ||        或
    • &&      且

4、数组

JavaScript中的数组类似于Python中的列表

常见功能:

 1 obj.length          数组的大小

2

3 obj.push(ele) 尾部追加元素

4 obj.pop() 尾部获取一个元素

5 obj.unshift(ele) 头部插入元素

6 obj.shift() 头部移除元素

7 obj.splice(start, deleteCount, value, ...) 插入、删除或替换数组的元素

8 obj.splice(n,0,val) 指定位置插入元素

9 obj.splice(n,1,val) 指定位置替换元素

10 obj.splice(n,1) 指定位置删除元素

11 obj.slice( ) 切片

12 obj.reverse( ) 反转

13 obj.join(sep) 将数组元素连接起来以构建一个字符串

14 obj.concat(val,..) 连接数组

15 obj.sort( ) 对数组元素进行排序

View Code

四、其他

1、序列化

    • JSON.stringify(obj)   序列化
    • JSON.parse(str)        反序列化

2、转义

    • decodeURI( )                   URl中未转义的字符
    • decodeURIComponent( )   URI组件中的未转义字符
    • encodeURI( )                   URI中的转义字符
    • encodeURIComponent( )   转义URI组件中的字符
    • escape( )                         对字符串转义
    • unescape( )                     给转义字符串解码
    • URIError                         由URl的编码和解码方法抛出

3、eval

JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值。

    • eval() 
    • EvalError   执行字符串中的JavaScript代码

4、正则表达式

1、定义正则表达式

    • /.../  用于定义正则表达式
    • /.../g 表示全局匹配
    • /.../i 表示不区分大小写
    • /.../m 表示多行匹配
      JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)

1 var pattern = /^Java\w*/gm;

2 var text = "JavaScript is more fun than \nJavaEE or JavaBeans!";

3 result = pattern.exec(text)

4 result = pattern.exec(text)

5 result = pattern.exec(text)

View Code

注:定义正则表达式也可以  reg= new RegExp()

2、匹配

JavaScript中支持正则表达式,其主要提供了两个功能:

    • test(string)     检查字符串中是否和正则匹配

  

n = 'uui99sdf'

reg = /\d+/

reg.test(n) ---> true

# 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$

View Code

    • exec(string)    获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。 

  

获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。

非全局模式

获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)

var pattern = /\bJava\w*\b/;

var text = "JavaScript is more fun than Java or JavaBeans!";

result = pattern.exec(text)

var pattern = /\b(Java)\w*\b/;

var text = "JavaScript is more fun than Java or JavaBeans!";

result = pattern.exec(text)

全局模式

需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕

var pattern = /\bJava\w*\b/g;

var text = "JavaScript is more fun than Java or JavaBeans!";

result = pattern.exec(text)

var pattern = /\b(Java)\w*\b/g;

var text = "JavaScript is more fun than Java or JavaBeans!";

result = pattern.exec(text)

View Code

3、字符串中相关方法

  

obj.search(regexp)                   获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)

obj.match(regexp) 获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部

obj.replace(regexp, replacement) 替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,

$数字:匹配的第n个组内容;

$&:当前匹配的内容;

$`:位于匹配子串左侧的文本;

$':位于匹配子串右侧的文本

$$:直接量$符号

View Code

  

5、时间处理

JavaScript中提供了时间相关的操作,时间操作中分为两种时间:

    • 时间统一时间
    • 本地时间(东8区)

更多操作参见:http://www.shouce.ren/api/javascript/main.html

五、语句和异常

1、条件语句

JavaScript中支持两个中条件语句,分别是:if 和 switch

    if(条件){

}else if(条件){

}else{

}

if

   switch(name){

case '1':

age = 123;

break;

case '2':

age = 456;

break;

default :

age = 777;

}

switch

2、循环语句

JavaScript中支持三种循环语句,分别是:

var names = ["alex", "tony", "rain"];

for(var i=0;i<names.length;i++){

console.log(i);

console.log(names[i]);

}

方式一

var names = ["alex", "tony", "rain"];

for(var index in names){

console.log(index);

console.log(names[index]);

}

方式二

方式三

3、异常处理

 1 try {

2 //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行

3 }

4 catch (e) {

5 // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。

6 //e是一个局部变量,用来指向Error对象或者其他抛出的对象

7 }

8 finally {

9 //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。

10 }

View Code

注:主动跑出异常 throw Error('xxxx')

六、函数

1、基本函数

JavaScript中函数基本上可以分为一下三类:

 1 // 普通函数

2 function func(arg){

3 return true;

4 }

5

6 // 匿名函数

7 var func = function(arg){

8 return "tony";

9 }

10

11 // 自执行函数

12 (function(arg){

13 console.log(arg);

14 })('123')

View Code

注意:对于JavaScript中函数参数,实际参数的个数可能小于形式参数的个数,函数内的特殊值arguments中封装了所有实际参数。

2、作用域

JavaScript中每个函数都有自己的作用域,当出现函数嵌套时,就出现了作用域链。当内层函数使用变量时,会根据作用域链从内到外一层层的循环,如果不存在,则异常。

切记:所有的作用域在创建函数且未执行时候就已经存在。

 1 function f2(){

2 var arg= 111;

3 function f3(){

4 console.log(arg);

5 }

6

7 return f3;

8 }

9

10 ret = f2();

11 ret();

View Code

View Code

注:声明提前,在JavaScript引擎“预编译”时进行。

更多:http://www.cnblogs.com/wupeiqi/p/5649402.html

3、闭包

闭包是指可以包含自由(未绑定到特定对象)变量的代码块。

「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」

由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。

 1 function f2(){

2 var arg= [11,22];

3 function f3(){

4 return arg;

5 }

6 return f3;

7 }

8

9 ret = f2();

10 ret();

View Code

4、面向对象

 1 function Foo (name,age) {

2 this.Name = name;

3 this.Age = age;

4 this.Func = function(arg){

5 return this.Name + arg;

6 }

7 }

8

9 var obj = new Foo('alex', 18);

10 var ret = obj.Func("sb");

11 console.log(ret);

View Code

对于上述代码需要注意:

    • Foo充当的构造函数
    • this代指对象
    • 创建对象时需要使用 new

上述代码中每个对象中均保存了一个相同的Func函数,从而浪费内存。使用原型和可以解决该问题:

 1 function Foo (name,age) {

2 this.Name = name;

3 this.Age = age;

4 }

5 Foo.prototype = {

6 GetInfo: function(){

7 return this.Name + this.Age

8 },

9 Func : function(arg){

10 return this.Name + arg;

11 }

View Code

DOM

文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。

一、查找元素

1、直接查找

document.getElementById             根据ID获取一个标签

document.getElementsByName 根据name属性获取标签集合

document.getElementsByClassName 根据class属性获取标签集合

document.getElementsByTagName 根据标签名获取标签集合

View Code

2、间接查找

parentNode          // 父节点

childNodes // 所有子节点

firstChild // 第一个子节点

lastChild // 最后一个子节点

nextSibling // 下一个兄弟节点

previousSibling // 上一个兄弟节点

parentElement // 父节点标签元素

children // 所有子标签

firstElementChild // 第一个子标签元素

lastElementChild // 最后一个子标签元素

nextElementtSibling // 下一个兄弟标签元素

previousElementSibling // 上一个兄弟标签元素

View Code

二、操作

1、内容

innerText   文本

outerText

innerHTML HTML内容

innerHTML

value 值

View Code

2、属性

attributes                // 获取所有标签属性

setAttribute(key,value) // 设置标签属性

getAttribute(key) // 获取指定标签属性

/*

var atr = document.createAttribute("class");

atr.nodeValue="democlass";

document.getElementById('n1').setAttributeNode(atr);

*/

View Code

 1 <!DOCTYPE html>

2 <html>

3 <head lang="en">

4 <meta charset="UTF-8">

5 <title></title>

6 </head>

7 <body>

8 <input type="button" value="全选" onclick="CheckAll();"/>

9 <input type="button" value="取消" onclick="CancelAll();"/>

10 <input type="button" value="反选" onclick="ReverseCheck();"/>

11

12 <table border="1" >

13 <thead>

14

15 </thead>

16 <tbody >

17 <tr>

18 <td><input type="checkbox" /></td>

19 <td>111</td>

20 <td>222</td>

21 </tr>

22 <tr>

23 <td><input type="checkbox" /></td>

24 <td>111</td>

25 <td>222</td>

26 </tr>

27 <tr>

28 <td><input type="checkbox" /></td>

29 <td>111</td>

30 <td>222</td>

31 </tr>

32 <tr>

33 <td><input type="checkbox" /></td>

34 <td>111</td>

35 <td>222</td>

36 </tr>

37 </tbody>

38 </table>

39 <script>

40 function CheckAll(ths){

41 var tb = document.getElementById('tb');

42 var trs = tb.childNodes;

43 for(var i =0; i<trs.length; i++){

44

45 var current_tr = trs[i];

46 if(current_tr.nodeType==1){

47 var inp = current_tr.firstElementChild.getElementsByTagName('input')[0];

48 inp.checked = true;

49 }

50 }

51 }

52

53 function CancelAll(ths){

54 var tb = document.getElementById('tb');

55 var trs = tb.childNodes;

56 for(var i =0; i<trs.length; i++){

57

58 var current_tr = trs[i];

59 if(current_tr.nodeType==1){

60 var inp = current_tr.firstElementChild.getElementsByTagName('input')[0];

61 inp.checked = false;

62 }

63 }

64 }

65

66 function ReverseCheck(ths){

67 var tb = document.getElementById('tb');

68 var trs = tb.childNodes;

69 for(var i =0; i<trs.length; i++){

70 var current_tr = trs[i];

71 if(current_tr.nodeType==1){

72 var inp = current_tr.firstElementChild.getElementsByTagName('input')[0];

73 if(inp.checked){

74 inp.checked = false;

75 }else{

76 inp.checked = true;

77 }

78 }

79 }

80 }

81

82 </script>

83 </body>

84 </html>

View Code

3、class操作

className                // 获取所有类名

classList.remove(cls) // 删除指定类

classList.add(cls) // 添加类

View Code

4、标签操作

a.创建标签

// 方式一

var tag = document.createElement('a')

tag.innerText = "wupeiqi"

tag.className = "c1"

tag.href = "http://www.cnblogs.com/wupeiqi"

// 方式二

var tag = "<a class='c1' href='http://www.cnblogs.com/wupeiqi'>wupeiqi</a>"

View Code

b.操作标签

// 方式一

var obj = "<input type='text' />";

xxx.insertAdjacentHTML("beforeEnd",obj);

xxx.insertAdjacentElement('afterBegin',document.createElement('p'))

//注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'

// 方式二

var tag = document.createElement('a')

xxx.appendChild(tag)

xxx.insertBefore(tag,xxx[1])

View Code

实例:

<!DOCTYPE html>

<html>

<head>

<meta charset='utf-8' />

<title></title>

<style>

.gray{

color:gray;

}

.black{

color:black;

}

</style>

<script type="text/javascript">

function Enter(){

var id= document.getElementById("tip")

id.className = 'black';

if(id.value=='请输入关键字'||id.value.trim()==''){

id.value = ''

}

}

function Leave(){

var id= document.getElementById("tip")

var val = id.value;

if(val.length==0||id.value.trim()==''){

id.value = '请输入关键字'

id.className = 'gray';

}else{

id.className = 'black';

}

}

</script>

</head>

<body>

<input type='text' class='gray' id='tip' value='请输入关键字' onfocus='Enter();' onblur='Leave();'/>

</body>

</html>

搜索框

跑马灯

以上是 python自动华 (十五) 的全部内容, 来源链接: utcz.com/z/387318.html

回到顶部