第七章笔记整理

JavaScript是一种解释性脚本语言(代码不进行预编译)

1.为网页添加各式各样的动态功能

2.为用户提供流畅美观的浏览效果

通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能。

在HTML页面中的脚本必须位于script围堵标签之间,标签放在head中、body中或是放在最后都可以,对位置要求不严格。

外部JavaScript文件的文件扩展名是.js(多个网页引用,写在外部)。

外部脚本不能包含script标签

函数function f1(){ alert("内容");}

在HTML中通过<script type="text/javascript" src="" />调用

标签属性中的js:<a href="javascript:alert(‘ok’)">内容显示</a>

引号嵌套:外单内双/外双内单

JavaScript注释:单行注释以//开头;多行注释以/*开始,以*/结束。

JavaScript声明(所有)变量的关键字:var

变量必须以字母、$或_开头,不能使用关键字保留字

变量名称对大小写敏感(y和Y是不同的变量)

局部变量会在函数运行以后被删除/全局变量会在页面关闭以后被删除。

JavaScript的对象:JavaScript将浏览器窗口拆分成不同的对象来表示,各个对象管理的内容也不一样。

window       表示整个窗体

history        表示历史记录

location      表示访问地址

document   表示页面中的元素对象(文档)

window方法:带有确定按钮的弹窗 .alert("内容");/可以接收用户输入的信息,带有确定和取消两个按钮 .prompt("提示性文字","输入框的提示性文字");/ .confirm("提示信息");

window对象是js操作过程中最大的对象,因此可以省略window前缀。

history方法:等同于浏览器的后退按钮 .back();/.go(-1);/等同于浏览器的向前按钮 .forward();/.go(1);

location方法:刷新 .reload();/跳转 .replace(‘url地址’);

location.href="请求地址";通过js跳转到某个请求地址,功能类似于a标签

document方法:向浏览器端输出代码 .write("输出内容");/通过id定位到某个页面元素 .getElementById("id名");

注意:xxxx is not defined 表示该变量未被声明

           undefined 指该变量未初始化

绝对不要在文档(DOM)加载完成之后使用document.write(),否则会覆盖该文档。

document.getElementById("id名").value;获得对应id的value值,如果在value后加等号赋值,则表示修改值(表单元素用)。

document.getElementById("id名").innerHTML/innerText="内容";用来操作标签对中间的文本信息,既可以获得值,也可以修改值(成对出现用)。

document.getElementById("id名").style.property=新样式;

document.getElementById("id名").checked;获得被点击的复选框的状态。

JavaScript自定义对象

var student = { name="张三";age=20;info:function(){匿名函数写方法};

JS调试:alert()弹窗,查看代码的执行环节;使用浏览器自带的bug调试工具(按F12),重点关注两个地方:network(网络)和console(控制台)。

字符串方法:通过下标找字符 charAt(下标);通过字符找下标 indexOf("字符");

截取字符串 substring(begin,end);包含开始位置,不包含结束位置;

分割字符串 split("分割的依据");返回值是数组。

数组方法:增强循环 for(var i in names){

                  //in前面的变量只能获取到数组的下标

                  alert(i+","+names[i]);}

=== 绝对等于(值和类型都相同)  !== 绝对不等于(任意一个或两个都不相等)

JavaScript的Array对象中length是属性不是方法。

var num = Math.random();返回0~1之间的随机数   Math.max/min();

全局属性NaN:非数值。

console.log(isNaN(666));//返回false

console.log(parseFloat(String));解析字符串,返回浮点数

若第一个字符不为数字,则返回NaN;两数之间存在空格,只打印空格前的值。

HTML事件是发生在HTML元素上的事情;在HTML页面中使用JavaScript时可以触发这些事件。

onclick单击事件   onmouseover鼠标放上   onmouseout鼠标离开

onfocus获得焦点   onblur失去焦点   onkeydown键盘按下  

onchange当内容被改变时   onload页面加载完毕   onsubmit确认按钮被点击

操作页面属性的语法:

元素对象.getAttribute("属性名"); 获得某个属性的值

元素对象.setAttribute("属性名","属性值");设置某个属性的值

动态时间:var flag = setInterval("显示时间的函数",毫秒数);

function stop(){

//清除定时器

clearInterval(flag); }

省市级联(二级联动)

<head>

<meta charset="utf-8" />

<title></title>

<script type="text/javascript">

function get() {

    var shi = document.getElementById("s").value;

    var qu = document.getElementById("q");

    if(shi == -1) {

        alert("请先选择市的信息");

    } else {

        qu.length = 0;

        switch(shi) {

            case "bj":

                qu.add(new Option("海淀", "hd"));

                qu.add(new Option("朝阳", "cy"));

                qu.add(new Option("昌平", "cp"));

                break;

            case "gz":

                qu.add(new Option("越秀", "yx"));

                qu.add(new Option("天河", "th"));

                qu.add(new Option("白云", "by"));

                break;

            case "fs":

                qu.add(new Option("禅城", "cc"));

                qu.add(new Option("南海", "nh"));

                qu.add(new Option("顺德", "sd"));

                break;

       }

    }

}

</script>

</head>

<body>

<select id="s" οnchange="get()">

    <option value="-1">请选择</option>

    <option value="bj">北京</option>

    <option value="gz">广州</option>

    <option value="fs">佛山</option>

</select>市

<select id="q">

    <option>请选择</option>

</select>区

</body>

表单验证:表单数据在提交前需要先做数据有效性验证。

目的:1、保证提交给服务器的数据是有意义的

           2、减轻服务器端的压力

<head>

<meta charset="utf-8" />

<title></title>

<script type="text/javascript">

function test1() {

     var us = document.getElementById("user").value;

     //tirm()去除空格

     if(us.trim().length == 0) {

          document.getElementById("testus").innerText = "请输入用户名";

          return false;

     } else {

          if(us.trim().length < 8 || us.trim().length > 12) {

               document.getElementById("testus").innerText = "用户名的长度为8-12位";

               return false;

          }

     }

     document.getElementById("testus").innerText = "√";

     return true;

}

function test2() {

     var up = document.getElementById("upass").value;

     if(up.trim().length == 0) {

          document.getElementById("testup").innerText = "请输入密码";

          return false;

     } else {

          if(up.trim().length < 6 || up.trim().length > 8) {

               document.getElementById("testup").innerText = "密码的长度为6-8位";

               return false;

          }

     }

     document.getElementById("testup").innerText = "√";

     return true;

}

function testall() {

     if(test1() && test2()) {

          return true;

     }

     alert("表单有误!");

     return false;

}

</script>

<style type="text/css">

    span {  color: red;  }

</style>

</head>

<body>

<form action="index.html" method="get" οnsubmit="return testall()">

    用户名:<input type="text" id="user" οnblur="test1()" />

    <span id="testus"></span><br />

    密码:<input type="password" id="upass" οnblur="test2()" />

    <span id="testup"></span><br />

    <input type="submit" value="提交" />

</form>

</body>

---------------------------------------------------------------------------------------------------------------------

<body>

    <button type="button" οnclick="createNewP()">动态添加一个元素</button>

    <div id="div1"><p id="p1">段落1</p></div>

</body>

<script>

function createNewP(){

    //创建一个新的段落元素

    var newElementP = document.createElement("p");

    //创建一个新的节点

    var text = document.createNode("");

    //将新的节点添加到新创建的段落元素中

    newElementP.appendChild(text);

    var div = document.getElementById("div1");

    //Var p1 = document.getElementById("p1");

    //添加新元素newElementP到已存在的元素div中,并插入到段落P1前面

    //div.inserBefore(newElementP,p1);

    div.appendChild(newElementP);

}

</script>

替换元素replaceChild();删除元素removeChild();

RegExp正则表达式

var reg = new RegExp(/正则表达式主体/,修饰符(可选));

^匹配输入字符串的开始位置  $匹配输入字符串的结束位置

表达式:中文字符的范围[\u4e00-\u9fa5]、查找方括号之间的任何字符[a-z]、查找任何从0至9的数字[0-9]、(x|y)先尝试匹配|左边的表达式,匹配成功则跳过右边的表达式,否则尝试匹配|右边的表达式。

修饰符:i执行对大小写不敏感的匹配/m执行多行匹配/g执行全局匹配(查找所有匹配,而非在找到第一个匹配后停止)。

元字符:\d数字  \D非数字  \s空白字符  \S非空白字符  \b匹配单词边界  \w单词字符  \W非单词\uxxxx查找以十六进制数xxxx规定的Unicode字符

量词:+ 匹配前一个字符至少一次、* 匹配前一个字符多次,包含零次、? 匹配前一个字符零次或一次、{m}匹配前一个字符m次、{m,n}匹配前一个字符m至n次。

正则表达式的方法test(" ") 用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回true,否则返回false。

验证:年龄在0-120之间  /^120$|^((1[0-1]|[1-9])?\d)$/

jquery是JavaScript的一个函数库,也是目前最流行的JS框架。

jquery的作用:页面特效、表单验证和异步请求。

jquery的语法:

1、在使用jquery之前,需要先引入封装的js文件

<script type="text/javascript" src="jquery文件引入的位置"></script>

<script type="text/javascript">内容</script>

2、jquery的代码是使用预编译(提前编译好),需要先定义jquery代码编写的位置。

格式一:$(document).ready(function(){ //代码编写的位置 });

格式二:$(function(){ //代码编写的位置 });

3、语法基础 $("选择器").函数名(); 选择器与CSS的选择器相通。

鼠标事件:将js中on事件的on关键字去掉,剩下的就变成了函数。

键盘事件:

$(document).keydown(function(mykey){

        //mykey是自定义的参数名,代表的是被按下的键

       if(mykey.keyCode==13){

              //回车键值是13  换行键值是10(Ctrl+Enter)

              var rs = confirm("确认提交表单吗?")

              if(rs == true){

                     //提交表单

                    //js实现表单提交的方式

                    document.getElementById("myform").submit();

                    //jquery实现表单提交

                    $("#myform").submit();

                    //通过表单数组提交

                    document.form[0].submit();

               }else{

                    alert("取消提交");

               }

       }  

});

$(this).css();this表示修改当前选中标签的样式

js对象和jquery对象的互相转换:

js->jquery

$(function(){

     var getstr = document.getElementById("getstr");

     var jquerystr = $(getstr);

     jquerystr.click(function){

          alert("按钮被点击了");

     }

});

jquery->js  jquery对象[0]

$("#getstr").click(function(){

     //获得文本框的信息

     var str = $("#str")[0].val;

     alert(str);

});

控制台上显示为[Object object]表示jquery对象,将js对象转换为jquery对象可通过console.log($(js对象));

window.onload只能执行一次,如果执行第二次,第一次的执行会被覆盖,而且必须等待网页全部加载完毕后(包括图片等)再执行包裹的代码。

$(function(){ });可执行多次,不会覆盖之前的执行,只需要等待网页中的DOM结果加载完毕就可以执行包裹的代码。

属性选择器:

$("[属性1][属性2][属性3]")获取同时满足多个属性的元素

$("[属性名^=value]")获取以value属性值为开头的元素

$("[属性名$=value]")获取以value属性值为结尾的元素

$("[属性名*=value]")获取包含指定value值的元素

基本过滤选择器:$("标签::first选择第一个元素/:last选择最后一个元素/:even选择下标为偶数的元素/:odd选择下标为奇数的元素/:eq(下标)等于指定下标的元素/:gt(下标)大于指定下标的元素/:lt(下标)小于指定下标的元素/:not(选择器)除该选择器以外的元素被选中");

可见性选择器:$("标签:visible可见/hidden不可见");

相邻选择器$("label + input");label标签只是用来显示的。

同辈选择器$("form ~ input");

<head>

<meta charset="utf-8" />

<title></title>

<script type="text/javascript" src="jquery-1.11.1.min.js"></script>

<script type="text/javascript">

var rs_a = false;

var rs_b = false;

$(function() {

     //1.验证用户名

     $("#user").blur(function() {

          var u = $(this).val();

          if($.trim(u).length == 0) {

               $("#testus").html("请输入用户名");

               rs_a = false;

          } else if($.trim(u).length < 8 || $.trim(u).length > 12) {

               $("#testus").html("用户名的长度为8-12位");

               rs_a = false;

          } else {

               $("#testus").html("√");

               rs_a = true;

          }

     });

     //2.验证密码

     $("#upass").blur(function() {

          var p = $(this).val();

          if($.trim(p).length == 0) {

               $("#testup").html("请输入密码");

               rs_b = false

          } else if($.trim(p).length < 6 || $.trim(p).length > 8) {

               $("#testup").html("密码的长度为6-8位");

               rs_b = false

          } else {

               $("#testup").html("√");

               rs_b = true;

          }

     });

     //3.防止用户直接点击提交按钮

     $("form").submit(function() {

          if((rs_a == true) && (rs_b == true)) {

               document.forms[0].submit();

          } else {

               alert("表单有误");

               return false;

          }

     });

});

</script>

<style type="text/css">

    span {  color: red;  }

</style>

</head>

<body>

<form action="index.html" method="get">

    用户名:<input type="text" id="user" />

    <span id="testus"></span><br />

    密码:<input type="password" id="upass" />

    <span id="testup"></span><br />

    <input type="submit" value="提交" />

</form>

</body>

//1、与内容相关的函数

function textFun(){

     //获取第一个匹配元素中的所有内容,包括嵌套在内部的标签

     //html()等价于innerHTML

     var str1=$("div").html();

     console.log(str1);

     //获取第一个匹配元素中的所有文本,不包含标签的内容

     var str2=$("div").text();

     console.log(str2);

     //val()等价于js中的value属性,只能用在表单项元素中,div不是表单元素,所以val()获取不到任何内容

     var str3=$("div").val();

     //input是表单项元素,val()可以获取到

     var str4=$("input").val();

     console.log(str3);

     console.log(str4);

}

//2、与属性相关的函数

function attrFun(){

     var img=$("img"); 

     //设置属性

     img.attr("src","img/cat.jpg"); 

     img.attr("title","不服!");

     //移除属性

     img.removeAttr("title");

     //获取属性

     var src=img.attr("src");

     var title=img.attr("title"); 

     //获取checked属性使用prop函数,获取到的值是boolean类型,表示是否被选中

     var list=$("input[type='radio']"); 

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

          var flag=$(list[i]).prop("checked");

          console.log("checked="+flag);

     }

}

//3、与css相关的函数

function cssFun(){

     //给获取的元素添加、删除、切换已有的样式,注意:样式一定是在样式表中提前定义好的

     $("div").addClass("样式");

     $("div").removeClass("样式");

     //没有参数的时候直接移除所有的样式

     $("div").removeClass();

     //匹配元素如果有当前的样式就删除,如果没有就添加

     $("div").toggleClass("样式");

     //给所有的元素添加样式,样式直接添加,无需提前定义

     $("input").css("border-color","blue");

     $("input").css({"color":"red","border-color":"green"});

}

append();在被选元素的结尾插入内容  before();在被选元素之前插入内容

prepend();在被选元素的开头插入内容  after();在被选元素之后插入内容

元素的克隆:$(selector).clone(true/false).appendTo("div");

将所有匹配的元素替换成指定的HTML或DOM元素:replaceWith();

将匹配的元素替换掉所有selector匹配到的元素:replaceAll();

remove();删除被选元素(及其子元素)  empty();从被选元素中删除子元素

$(selector).hide隐藏([speed,callback]);

$(selector).show展示([speed,callback]);

$(selector).toggle切换([speed,callback]);

可选的speed参数可以取以下值:"slow"、"fast"或毫秒值。

可选的callback参数是隐藏或显示完成后所执行的函数名称。

fadeIn淡入/fadeOut淡出/fadeToggle切换/sideDown下滑/sideUp上滑

bootstrapt的使用(迅速美化页面):

1.必须先引入bootstrapt的支持,包括js、css、font文件。

2.引入的文件必须先有jquery的核心文件,再引入bootstrapt的js文件,最后引入自己的文件。

3.css文件必须先引入bootstrapt的css文件,再引入自己的文件。

font文件无需在页面上引入,但是需要在项目的目录中存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值