Python day33_前端_Javascript

JavaScript 介绍

JavaScript 是运行在浏览器端的脚本语言,JavaScript 主要解决的是前端与用户交互的问题,包括使用交互与数据交互。 JavaScript是浏览器解释执行的。

前端三大块

1、HTML:页面结构

2、CSS:页面表现:元素大小、颜色、位置、隐藏或显示、部分动画效果

3、JavaScript:页面行为:部分动画效果、页面与用户的交互、页面功能

HTML 引入 JavaScript 的方式

1、行间事件(主要用于事件)(几乎不用)

<input type="button" name="" onclick="alert('ok!');">

2、页面script标签嵌入

`<script type="text/javascript">`

alert('ok');

</script>

3、外部引入

<script type="text/javascript" src="js/index.js"></script>

JS 中变量、数据类型及基本语法规范

定义变量需要用关键字 'var'

 var iNum = 123
 var sTr = 'asd'

 //同时定义多个变量可以用","隔开,公用一个‘var’关键字
 var iNum = 45, sTr='qwe', sCount='68';

变量类型

5种基本数据类型:

1、number 数字类型

2、string 字符串类型

3、boolean 布尔类型 true 或 false

4、undefined undefined类型,变量声明未初始化,它的值就是undefined

5、null null类型,表示空对象,如果定义的变量将来准备保存对象,可以将变量初始化为null,在页面上获取不到对象,返回的值就是null

6、1种复合类型:

object

变量、函数、属性、函数参数命名规范

1、区分大小写

2、第一个字符必须是字母、下划线(_)或者美元符号($)

3、其他字符可以是字母、下划线、美元符或数字

JS 注释

<script type="text/javascript">    
    // 单行注释
    var iNum = 123;
    
    /*  
        多行注释
        1、...
        2、...
    */
    var sTr = 'abc123';
</script>

获取元素的方法

可以使用内置对象document上的getElementById方法来获取页面上设置了id属性的元素,获取到的是一个html对象,然后将它赋值给一个变量

例如:

<script type="text/javascript">
    var oDiv = document.getElementById('div1');
</script>
....
<div id="div1">这是一个div元素</div>

注意!!

如果把javascript写在元素的上面,就会出错,因为页面上从上往下加载执行的,javascript去页面上获取元素div1的时候,元素div1还没有加载

解决方案:

1、将javascript放到页面最下边

2、将javascript语句放到window.onload触发的函数里面,获取元素的语句会在页面加载完后才执行,就不会出错了。(一般都用第二种方法)

<script type="text/javascript">
    window.onload = function(){
        var oDiv = document.getElementById('div1');
    }
</script>

操作元素属性

获取的页面元素,就可以对页面元素的属性进行操作,属性的操作包括属性的读和写

属性写法

1、如果能够在 HTML 页面正常看到的属性, 我们在 JS 中可以同名获取

2、“class” 属性写成 “className”

3、“style” 属性里面的属性,有横杠的改成驼峰式,比如:“font-size”,改成”style.fontSize”

读取属性:

var 变量 = 元素.属性名

改写属性:

元素.属性名 = 新属性值

innerHTML:

innerHTML 可以读取或者写入标签的文本部分

JS部分: 
<script type="text/javascript">
    window.onload = function(){
        var oDiv = document.getElementById('div1');
        //读取
        var sTxt = oDiv.innerHTML;
        alert(sTxt);
        //写入
        oDiv.innerHTML = '<a href="http://www.baidu.com">百度首页<a/>';
    }
</script>
<div id="div1">这是一个div元素</div>

事件属性

标签上除了可以添加 样式, id, class等属性之外, 还可以添加事件属性

最常用的事件属性有:

  • 鼠标单击事件 onclick
  • 鼠标双击事件 ondblclick
  • 鼠标移入事件 onmouseover
  • 鼠标移除事件 onmouseout

函数

1. 函数定义与执行

<script type="text/javascript">
    // 函数定义
    function fnAlert(){
        alert('hello!');
    }
    // 函数执行
    fnAlert();
</script>

变量 与 函数 预解析

JavaScript 解析过程分为两个阶段,先是编译阶段,然后执行阶段,在编译阶段会将function定义的函数提前,并且将var定义的变量声明提前,将它赋值为 undefined

举个栗子:

<script type="text/javascript">    
    
    fnAlert();       // 弹出 hello!
  
    function fnAlert(){
        alert('hello!');
    }
    alert(iNum);  // 弹出 undefined
    var iNum = 123;
</script>

2. 函数传参

Javascript 的函数中可以传递参数

<script type="text/javascript">
    function fnAlert(a){
        alert(a); //弹出12345
    }
    fnAlert(12345);
</script>

3. 函数的返回值

JavaScript 中函数使用 return 返回内容

函数中 'return' 关键字的作用:

  • 返回函数中的值或者对象
  • 结束函数的运行

4.匿名函数

没有名字的函数, 称为匿名函数

我们可以通过将函数名赋值给事件属性的形式, 将事件和函数关联起来,这样可以减少函数命名,并且简化代码。函数如果做公共函数,就可以写成匿名函数的形式

举个栗子:

<script type="text/javascript">
    window.onload = function(){
    
        // 正常的函数赋值调用
        var oBtn = document.getElementById('btn1');
        oBtn.onclick = myalert; //注意:这里是将方法赋给事件,而不是方法的调用
        function myalert(){
            alert('ok!');
        }
               // 匿名函数的使用

            oBtn.onclick = function (){

                alert('ok!');

            }

        }

    </script>

条件语句

1、运算符

1、算术运算符: +(加)、 -(减)、 *(乘)、 /(除)、 %(求余)

2、赋值运算符:=、 +=、 -=、 *=、 /=、 %=

3、条件运算符:==、===、>、>=、<、<=、!=、&&(逻辑与 同真为真,一假则假)、||(逻辑或 全假为假 一真则真)、!(逻辑非 取反)

注意!!

==:只要求值相等(在比较时会转换数据类型) 如:"1" == true (结果为true)
===:要求值和类型都相等 如:"1" === true (结果为false)

2、条件语句表达式

使用格式一: 

if (判断条件) {
    // 如果条件为 true, 进入这里执行
    执行的语句01
    ...
}

使用格式二: 

if (判断条件) {
    // 如果条件为 true, 进入这里执行
    执行的语句01
    ...
} else {
    // 如果条件为 false, 进入这里执行
    执行的语句01
    ...
}

使用格式三: 

if (判断条件01) {
    // 如果第一个条件为 true, 进入这里执行
    执行的语句01
    ...
} else if (判断条件02) {
    // 如果第二个条件为 true, 进入这里执行
    执行的语句01
    ...
}

数组及操作方法

数组就是一组数据的集合,javascript 中,数组里面的数据可以是不同类型的, 这里的数组就相当于python 中的列表

1.定义数组的方法

数组定义形式: 
第一种: 
var 数组名 = new Array(元素一, 元素二, 元素三...)

第二种: 
var 数组名 = [元素一, 元素二, 元素三...]

2.数组常见的操作方法

1、获取数组的长度

一般我们获取数组长度使用: length

var aList = [1,2,3,4];

// 打印输出数组 aList 的长度
console.log(aList.length)

2、下标索引的使用

var aList = [1,2,3,4];

console.log(aList[0]);

3、join(分隔符)

var aList = [1, 2, 3, 4]
var newList = aList.join('-') //使用-将数组中的每个元素分隔
console.log(newList) //获取新的一个值
console.log(typeof(newList)) //这个值的类型是string '1-2-3-4'

4、push( ) 和 pop( )

从数组最后增加成员或删除成员
var aList = [1,2,3,4];
aList.push(5); //在数组最后增加一个元素
console.log(aList) //打印结果是[1,2,3,4,5]
aList.pop();//在数组最后移除一个元素
console.log(aList) //打印结果为[1,2,3,4]

5、reverse( )

将数组反转

var aList = [3,2,1,4];

aList.reverse();//反转数组
console.log(aList) //打印结果为[4,1,2,3]

6、indexOf( )

返回数组中元素第一次出现的索引值:

  • 如果有, 则正常返回索引值

  • 如果检索的内容不存在于数组中, 则返回 -1

    var aList = [1,2,3,4,1,3,4];

    console.log( aList.indexOf(4) ) //第一次出现元素4的下标为3
    console.log( aList.indexOf(5) ) //不存在元素5,打印结果为-1

7、splice( )

在数组中增加或删除成员(任意位置)

使用格式: 

数组名.splice(index,howmany,item1,.....,itemX)

index:必需。整数(可正可负(数组中最后一个元素下标为-1),都是从指定位置向后删除),规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX:可选。向数组添加的新项目

举个栗子:

var aList = [1,2,3,4];
aList.splice(2,1,7,8,9); //从下标为2的开始(包含2),删除1个元素,然后在此位置增加'7,8,9'三个元素
alert(aList); //弹出 1,2,7,8,9,4

8、多维数组

也就是列表的嵌套

var aList = [[1,2,3],['a','b','c']];    
alert(aList[0][1]); //弹出2;

循环

for 循环

使用格式:

for(var i=0;i<5;i++)
{
    console.log(i)
}

小练习:数组去重

var aList = [1,2,3,4,4,3,2,1,2,3,4,5,6,5,5,3,3,4,2,1];

var aList2 = [];

for(var i=0;i<aList.length;i++)
{
    if(aList.indexOf(aList[i])==i)
    {
        aList2.push(aList[i]);
    }
}

alert(aList2);

字符串处理方法

1、+ 运算符

如果是两个数字进行相加运算, 得到的是 两个数的和

如果是两个字符串进行相加运算, 得到的是 两个字符串的拼接

如果是一个字符串, 一个数字的相加运算, 得到的是 拼接的结果 字符串

例如:

var iNum01 = 12;
var iNum02 = 24;
var sNum03 = '12';
var sTr = 'abc';

alert( iNum01 + iNum02 );  // 弹出36
alert( iNum01 + sNum03 );  // 弹出1212 数字和字符串相加等同于字符串相加
alert( sNum03 + sTr );     // 弹出12abc

2、parseFloat( )

将数字字符串转化为小数

var sNum03 = '12.32'
alert( parseFloat(sNum03) );  // 弹出 12.32 将字符串小数转化为数字小数

3、parseInt( )

将 数字字符串 转化为 整数

var sNum01 = '12';
var sNum02 = '24';
var sNum03 = '12.32';

alert( sNum01+sNum02 );                       // 弹出1224
alert( parseInt(sNum01) + parseInt(sNum02) )  // 弹出36
alert( parseInt(sNum03) )                     // 弹出数字12 将字符串小数转化为数字整数

4、split( )

把 一个字符串 分隔成 字符 组成的 数组

var sTr = '2017-4-22';
var aStr1 = sTr.split("-");
var aStr2 = sTr.split("");
var aStr3 = sTr.split();

console.log(aStr1); //['2017','4','22']  
console.log(aStr2);  //['2','0','1','7','-','4','-','2','2'] 
console.log(aStr3) //['2017-4-22']

5、indexOf()

方法可返回某个指定的字符串值在字符串中首次出现的位置。

如果要检索的字符串值没有出现,则该方法返回 -1(和数组的indexof功能一样)

6、substring( )

截取字符串

左闭右开 [start, stop) start <= x < stop

start: 必需。一个非负的整数,规定要提取的子串的第一个字符在 字符串 中的位置。

stop: 可选。一个非负的整数,比要提取的子串的最后一个字符在 字符串 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾

var sTr = "abcdefghijkl";
var sTr2 = sTr.substring(3,5);
var sTr3 = sTr.substring(1);

alert(sTr2); // 弹出 de
alert(sTr3); // 弹出 bcdefghijkl

7、字符串反转

将字符串的内容颠倒过来, 不是排序

var str = 'asdfj12jlsdkf098';
var str2 = str.split('').reverse().join('');
//先将字符串分割成数组,然后数组反转,之后再将数组分割成字符串
console.log(str2); //结果为:890fkdslj21jfdsa

调试程序的方法

  1. alert

  2. console.log

  3. document.title

  4. document.write( ):用的很少

定时器

定时器在 javascript 中的作用

  • 定时调用函数
  • 制作动画
  • 模拟网络延时的情况

1. 定时器的种类:

  • 执行一次的定时器: setTimeout
  • 执行多次的定时器: setInterval
  • 关闭只执行一次的定时器: clearTimeout
  • 关闭反复执行的定时器: clearInterval
定时器的使用方式: 

setInterval(code(或者写func),millisec)

举个栗子:

使方框左右移动:

CSS部分: 
<style>
    .box{
        width:300px;
        height:300px;
        background:gold;
        position:fixed;
        left:0px;
        top:100px;
    }
</style>

JS部分: 
<script>
    window.onload = function(){
        var oBox = document.getElementById('box');
        var iLeft = 0;
        var iSpeed = 3;

        var oTimer = setInterval(fnMove,30);
        function fnMove(){
            iLeft += iSpeed;                
            if(iLeft>600)
            {
                iSpeed = -3;
            }
            
            if(iLeft<0)
            {
                iSpeed = 3;
            }

            oBox.style.left = iLeft + 'px';
        }        
    }    
</script>

    

    HTML部分:

    <div class="box" id="box"></div>

变量作用域

全局变量:在函数之外定义的变量,为整个页面公用,函数内部外部都可以访问。

局部变量:在函数内部定义的变量,只能在定义该变量的函数内部访问,外部无法访问

封闭函数

封闭函数是 javascript 中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数

写法一:

(function(){
    alert('hello!');
})();

写法二:

!function(){
    alert('hello!');
}()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,114评论 0 13
  • 第1章 认识JS JavaScript能做什么?1.增强页面动态效果(如:下拉菜单、图片轮播、信息滚动等)2.实现...
    mo默22阅读 1,236评论 0 5
  • 1.HTML DOM (Document Object Model) document.getElementByI...
    廖马儿阅读 1,401评论 0 17
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    程序员poetry阅读 114,222评论 24 450
  • 班级基本情况: 三年级是一个转折,一二年级是和这个世界浑然一体的。到三年级之后,孩子的自我意识开始进入,他与世...
    微雨燕子阅读 2,442评论 0 7