前言
JavaScript是前端开发不可或缺的技能。本文将引导读者掌握其核心技术,包括获取和操作HTML元素、JS数组操作、循环语句、字符串拼接、定时器使用和AJAX技术。
一、获取标签元素
可以使用内置对象 document 上的 getElementById 方法来获取页面上设置了id属性的标签元素,获取到的是一个html对象,然后将它赋值给一个变量,比如:
<script type="text/javascript"> var oDiv = document.getElementById('div1'); alert(oDiv); </script> <div id="div1">这是一个div元素</div>
注意:
上面的代码,如果把javascript写在元素的上面,就会出错,因为页面上从上往下加载执行的,javascript去页面上获取元素div1的时候,元素div1还没有加载。
解决方法有两种:
第一种方法:将javascript放到页面最下边
<div id="div1">这是一个div元素</div> <script type="text/javascript"> var oDiv = document.getElementById('div1'); alert(oDiv); </script>
第二种方法:设置页面加载完成执行的函数,在执行函数里面获取标签元素。
<script type="text/javascript"> window.onload = function(){ var oDiv = document.getElementById('div1'); } </script>
说明:
onload是页面所有元素加载完成的事件,给onload设置函数时,当事件触发就会执行设置的函数。
二、操作标签元素属性
1. 属性的操作
属性名在js中的写法:
- html的属性和js里面属性大多数写法一样,但是
“class” 属性写成 “className”
- “style” 属性里面的属性,有横杠的改成驼峰式,比如:
“font-size”,改成”style.fontSize”
<style> .sty01{ font-size:20px; color:red; } .sty02{ font-size:30px; color:pink; text-decoration:none; } </style> <script type="text/javascript"> window.onload = function(){ var oInput = document.getElementById('input1'); var oA = document.getElementById('link1'); // 读取属性值 var sValue = oInput.value; var sType = oInput.type; var sName = oInput.name; var sLinks = oA.href; // 操作class属性,需要写成“className” oA.className = 'sty02'; // 写(设置)属性 oA.style.color = 'red'; oA.style.fontSize = sValue; } </script> <input type="text" name="setsize" id="input1" value="20px"> <a href="#" id="link01" class="sty01">这是一个链接</a>
2. innerHTML
innerHTML
可以读取或者设置标签包裹的内容
<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>
该处使用的url网络请求的数据。
三、数组及操作方法
1. 数组的定义
// 实例化对象方式创建 var aList = new Array(1,2,3); // 字面量方式创建,推荐使用 var aList2 = [1,2,3,'asd']; //多维数组指的是数组的成员也是数组,把这样的数组叫做多维数组。 var aList = [[1,2,3],['a','b','c']];
2. 数组的操作
获取数组的长度:
var aList = [1,2,3,4]; alert(aList.length); // 弹出4
根据下标取值:
var aList = [1,2,3,4]; alert(aList[0]); // 弹出1
从数组最后添加和删除数据:
var aList = [1,2,3,4]; aList.push(5); alert(aList); //弹出1,2,3,4,5 aList.pop(); alert(aList); // 弹出1,2,3,4
根据下标添加和删除元素:
arr.splice(start,num,element1,.....,elementN) 参数解析: 1. start:必需,开始删除的索引。 2. num:可选,删除数组元素的个数。 3. elementN:可选,在start索引位置要插入的新元素。 ps:此方法会删除从start索引开始的num个元素,并将elementN参数插入到start索引位置。
代码示例:
var colors = ["red", "green", "blue"]; colors.splice(0,1); //删除第一项 alert(colors); //green,blue colors.splice(1, 0, "yellow", "orange"); //从第一个索引位置插入两项数据 alert(colors); //green,yellow,organge,blue colors.splice(1, 1, "red", "purple"); //删除一项,插入两项数据 alert(colors); //green,red,purple,orange,blue
四、循环语句
- for
- while
- do-while
//for 循环 var array = [1, 4, 5]; for(var index = 0; index < array.length; index++){ result = array[index]; alert(result); } //while 循环 var array = [1, 4, 5]; var index = 0; while (index < array.length) { result = array[index]; alert(result); index++; } //do-while 循环 var array = [1, 4, 5]; var index = 0; do { result = array[index]; alert(result); index++; } while (index < array.length);
五、字符串拼接
字符串拼接使用: “+” 运算符
var iNum1 = 10; var fNum2 = 11.1; var sStr = 'abc'; result = iNum1 + fNum2; alert(result); // 弹出21.1 result = fNum2 + sStr; alert(result); // 弹出11.1abc
六、定时器
定时器就是在一段特定的时间后执行某段程序代码。
1. 定时器的使用
js 定时器有两种创建方式:
setTimeout(func[, delay, param1, param2, ...])
:以指定的时间间隔(以毫秒计)调用一次函数的定时器setInterval(func[, delay, param1, param2, ...])
:以指定的时间间隔(以毫秒计)重复调用一个函数的定时器
setTimeout函数的参数说明:
- 第一个参数 func , 表示定时器要执行的函数名
- 第二个参数 delay, 表示时间间隔,默认是0,单位是毫秒
- 第三个参数 param1, 表示定时器执行函数的第一个参数,一次类推传入多个执行函数对应的参数。
<script> function hello(){ alert('hello'); } // 执行一次函数的定时器 setTimeout(hello, 500); </script>
setInterval函数的参数说明:
- 第一个参数 func , 表示定时器要执行的函数名
- 第二个参数 delay, 表示时间间隔,默认是0,单位是毫秒
- 第三个参数 param1, 表示定时器执行函数的第一个参数,一次类推传入多个执行函数对应的参数。
<script> function hello(){ alert('hello'); } // 重复执行函数的定时器 setInterval(hello, 1000); </script>
3. 清除定时器
js 清除定时器分别是:
clearTimeout(timeoutID)
清除只执行一次的定时器(setTimeout函数)clearInterval(timeoutID)
清除反复执行的定时器(setInterval函数)
clearTimeout函数的参数说明:
- timeoutID 为调用 setTimeout 函数时所获得的返回值,使用该返回标识符作为参数,可以取消该 setTimeout 所设定的定时执行操作。
<script> function hello(){ alert('hello'); // 清除只执行一次的定时器 clearTimeout(t1) } // 执行一次函数的定时器 t1 = setTimeout(hello, 500); </script>
clearInterval函数的参数说明:
- timeoutID 为调用 setInterval 函数时所获得的返回值,使用该返回标识符作为参数,可以取消该 setInterval 所设定的定时执行操作。
<script> function hello(){ alert('hello'); } // 重复执行函数的定时器 var t1 = setInterval(hello, 1000); function stop(){ // 清除反复执行的定时器 clearInterval(t1); } </script> <input type="button" value="停止" onclick="stop();">
七、ajax
1. ajax的介绍
ajax
是Asynchronous JavaScript and XML
的简写,ajax一个前后台配合的技术,它可以让 javascript 发送异步的 http 请求,与后台通信进行数据的获取,ajax 最大的优点是实现局部刷新,ajax可以发送http请求,当获取到后台数据的时候更新页面显示数据实现局部刷新,在这里大家只需要记住,当前端页面想和后台服务器进行数据交互就可以使用ajax了。注意:在html页面使用ajax需要在web服务器环境下运行, 一般向自己的web服务器发送ajax请求。
2. ajax的使用
jquery
将它封装成了一个方法$.ajax()
,我们可以直接用这个方法来执行ajax请求。
示例代码:
在服务端没有开启cookie的时候,可以正常请求,如果需要cookie或者session需要配置xhrFields:{withCredentials:true}
<script> var obj = { name:'站桑' } $.ajax({ // 1.url 请求地址 url:'http://t.weather.sojson.com/api/weather/city/101010100', // 2.type 请求方式,默认是'GET',常用的还有'POST' type:'GET', // 3.dataType 设置返回的数据格式,常用的是'json'格式 dataType:'JSON', // 4.data 设置发送给服务器的数据, 没有参数不需要设置 data:obj, // 5.success 设置请求成功后的回调函数 success:function (response) { console.log(response); }, // 6.error 设置请求失败后的回调函数 error:function () { alert("请求失败,请稍后再试!"); }, // 7.async 设置是否异步,默认值是'true',表示异步,一般不用写 async:true }); </script>
ajax方法的参数说明:
url
请求地址type
请求方式,默认是’GET’,常用的还有’POST’dataType
设置返回的数据格式,常用的是’json’格式data
设置发送给服务器的数据,没有参数不需要设置success
设置请求成功后的回调函数error
设置请求失败后的回调函数async
设置是否异步,默认值是’true’,表示异步,一般不用写xhrFields:{withCredentials:true}
, 与后端跨域配合设置,允许携带cookie- 同步和异步说明
- 同步是一个ajax请求完成另外一个才可以请求,需要等待上一个ajax请求完成,好比线程同步。
- 异步是多个ajax同时请求,不需要等待其它ajax请求完成, 好比线程异步。
ajax的简写方式:
$.ajax
按照请求方式可以简写成$.get
或者$.post
方式
ajax简写方式的示例代码:
<script> $(function(){ /* 1. url 请求地址 2. data 设置发送给服务器的数据, 没有参数不需要设置 3. success 设置请求成功后的回调函数 4. dataType 设置返回的数据格式,常用的是'json'格式, 默认智能判断数据格式 */ $.get("http://t.weather.sojson.com/api/weather/city/101010100", function(dat,status){ console.log(dat); console.log(status); alert(dat); }).error(function(){ alert("网络异常"); }); /* 1. url 请求地址 2. data 设置发送给服务器的数据, 没有参数不需要设置 3. success 设置请求成功后的回调函数 4. dataType 设置返回的数据格式,常用的是'json'格式, 默认智能判断数据格式 */ $.post("test.php", {"func": "getNameAndTime"}, function(data){ alert(data.name); console.log(data.time); }, "json").error(function(){ alert("网络异常"); }); }); </script>
$.get
和$.post
方法的参数说明:
$.get(url,data,success(data, status, xhr),dataType).error(func)
$.post(url,data,success(data, status, xhr),dataType).error(func)
url
请求地址data
设置发送给服务器的数据,没有参数不需要设置success
设置请求成功后的回调函数
- data 请求的结果数据
- status 请求的状态信息, 比如: “success”
- xhr 底层发送http请求XMLHttpRequest对象
dataType
设置返回的数据格式
- “xml”
- “html”
- “text”
- “json”
error
表示错误异常处理
- func 错误异常回调函数