美文网首页
JavaScript基础2

JavaScript基础2

作者: Harper324 | 来源:发表于2018-11-27 18:09 被阅读0次
1、条件分支语句
(1)else-if语句
if (condition1){
  // 当 condition1==true 时执行的语句块1
} else if (condition2){
  // 当 condition2==true 时执行的语句块2
} else {
  // 当 condition1==false && condition2==false 时执行的语句块3
}
(2)switch语句
switch(n){ 
    case n1: 
      执行代码块 1
      break; 
    case n2: 
      执行代码块 2 
      break; 
    default: 
      与 case n1 和 case n2 不同时执行的代码块3 
}
  • 这里的 n 是一个变量,若 n 与 n1 相等,则执行代码块1,若 n 与 n2 相等,则执行代码块2,若都不相等,则执行代码块3
  • break语句在这里的作用是跳出这个switch语句块。如果不使用break,成立的case后的代码都会接着执行
2、循环语句
(1)for语句
for (循环变量初始化;循环终止条件;增量){
  循环体;
}
(2)While 循环
while(循环终止条件){
  循环体
}
(3)do-while循环(后测试循环)
do{
循环体
}while(循环终止条件)
3、函数

函数是一个执行特定功能的可重用的代码块。

(1)函数定义

在JavaScript中,我们使用function关键字来定义函数,后面跟一组参数以及函数体。

function functionName(arg0, arg1, arg2 ... argn){
    statements;
}//无返回值
function add(num1, num2){
    return num1 + num2;
}//有返回值
(2)函数调用

如下面例子,可用变量来接收函数的返回值


function add(num1, num2){
    return num1 + num2;
}
var result = add(3, 5);
alert(result); // 8
4、DOM

DOM是 W3C(万维网联盟)的标准。定义了访问 HTML 和 XML 文档的标准:W3C 文档对象模型Document Object Model(DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。

(1) DOM 节点

根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:

  • 整个文档是一个文档节点
  • 每个 HTML 元素是元素节点
  • HTML 元素内的文本是文本节点
  • 每个 HTML 属性是属性节点
  • 注释是注释节点
  • HTML DOM 节点树
    HTML DOM 将 HTML 文档视作树结构。这种结构被称为节点树,通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问。所有 HTML 元素(节点)均可被修改,也可以创建或删除节点。
    image.png
  • 节点父、子和同胞
    节点树中的节点彼此拥有层级关系。父(parent)子(child)同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。
    • 在节点树中,顶端节点被称为根(root)
    • 对于一个 HTML 来说,文档节点 Document (是看不到的)就是它的根节点,这个根节点对应的对象就是 document ,我们可以通过根节点来访问它的子节点(Element 、Text)。
    • 每个节点都有父节点、除了根(它没有父节点)
    • 一个节点可拥有任意数量的子
    • 同胞是拥有相同父节点的节点
(2)DOM方法

方法是我们可以在节点(HTML 元素)上执行的动作。

  • 编程接口
    • 可通过 JavaScript (以及其他编程语言)对 HTML DOM 进行访问。
    • 所有 HTML 元素被定义为对象,而编程接口则是对象方法和对象属性。
  • 一些常用的 HTML DOM 方法:
    • getElementById(id) - 获取带有指定 id 的节点(元素)
    • appendChild(node) - 插入新的子节点(元素)
    • removeChild(node) - 删除子节点(元素)
    • appendChild() 把新的子节点添加到指定节点。
    • removeChild() 删除子节点。
    • replaceChild() 替换子节点。
    • insertBefore() 在指定的子节点前面插入新的子节点。
    • createAttribute() 创建属性节点。
    • createElement() 创建元素节点。
    • createTextNode() 创建文本节点。
    • getAttribute() 返回指定的属性值。
    • setAttribute() 把指定属性设置或修改为指定的值
      eg.
<!DOCTYPE html>
<html>
<body>

<p id="intro">Hello World!</p>


<script>
x=document.getElementById("intro");
document.write(x.innerHTML);//输出Hello World!
</script>

</body>
</html>
(3)DOM属性

属性是节点(HTML 元素)的值,能够获取或设置。

  • innerHTML 属性:获取元素内容

  • nodeName 属性

    • nodeName 是只读的
    • 元素节点的 nodeName 与标签名相同
    • 属性节点的 nodeName 与属性名相同
    • 文本节点的 nodeName 始终是 #text
    • 文档节点的 nodeName 始终是 #document
  • nodeValue 属性

    • 元素节点的 nodeValue 是 undefined 或 null
    • 文本节点的 nodeValue 是文本本身
    • 属性节点的 nodeValue 是属性值
  • nodeType 属性
    eg.

<!DOCTYPE html>
<html>
<body>

<p id="intro" class="intr">Hello World!</p>

<script>
x=document.getElementById("intro");
document.write(x.nodeValue);//Hello World!
document.write(x.nodeName);//null
document.write(x.nodeType);//P
document.write(x.id);//intro
document.write(x.className);//intr
document.write(x.tagName);//P
</script>

</body>
</html>
5、HTLM DOM事件

HTML DOM 允许 JavaScript 对 HTML 事件作出反应。

  • 当用户点击鼠标时
  • 当网页已加载时
  • 当图片已加载时
  • 当鼠标移动到元素上时
  • 当输入字段被改变时
  • 当 HTML 表单被提交时
  • 当用户触发按键时
  • onloadonunload 事件
    当用户进入或离开页面时,会触发 onload 和 onunload 事件。
  • onchange 事件常用于输入字段的验证
  • onmouseoveronmouseout 事件可用于在鼠标指针移动到或离开元素时触发函数。
<!DOCTYPE html>
<html>
<body>

<div 
onmouseover="mOver(this)" 
onmouseout="mOut(this)" 
style="background-color:#D94A38;width:200px;height:50px;padding-top:25px;text-align:center;">
Mouse Over Me
</div>

<script>
function mOver(obj)
{
obj.innerHTML="谢谢你"
}

function mOut(obj)
{
obj.innerHTML="把鼠标指针移动到上面"
}
</script>

</body>
</html>
  • onmousedownonmouseup 以及 onclick 事件是鼠标点击的全部过程。首先当某个鼠标按钮被点击时,触发 onmousedown 事件,然后,当鼠标按钮被松开时,会触发 onmouseup 事件,最后,当鼠标点击完成时,触发 onclick 事件。
<div 
onmousedown="mDown(this)" 
onmouseup="mUp(this)" 
style="background-color:#D94A38;width:200px;height:50px;padding-top:25px;text-align:center;">
点击这里
</div>

<script>
function mDown(obj)
{
obj.style.backgroundColor="#1ec5e5";
obj.innerHTML="松开鼠标"
}

function mUp(obj)
{
obj.style.backgroundColor="#D94A38";
obj.innerHTML="谢谢你"
}
</script>

</body>
</html>
6、JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 2个程序(或服务器、语言等)需要交互通信的时候,他们倾向于使用string字符串因为string在很多语言里解析的方式都差不多。为了描述这些复杂的数据结构作为一个string字符串,制定了标准的规则和语法。JSON只是其中一种语法,它可以在string上下文里描述对象,数组,字符串,数字,布尔型和null,然后通过程序间传输,并且反序列化成所需要的格式。易于人阅读和编写。同时也易于机器解析和生成。

  • JavaScriptJSON 的区别
    • 对象和数组 :属性名称必须是双引号括起来的字符串;最后一个属性后不能有逗号。
    • 数值:禁止出现前导零( JSON.stringify 方法自动忽略前导零,而在 JSON.parse 方法中将会抛出 SyntaxError);如果有小数点, 则后面至少跟着一位数字。
    • 字符串 :只有有限的一些字符可能会被转义;禁止某些控制字符; Unicode 行分隔符 (U+2028)和段分隔符 (U+2029)被允许 ; 字符串必须用双引号括起来。
let code = '"\u2028\u2029"';
JSON.parse(code);  // 正常
eval(code);  // 错误
  • JSON方法
    • JSON.parse()解析JSON字符串并返回对应的值,构造由字符串描述的JavaScript值或对象。可以额外传入一个转换函数,用来将生成的值和其属性, 在返回之前进行某些修改。
var json = '{"result":true, "count":42}';
obj = JSON.parse(json);

console.log(obj.count);
// expected output: 42

console.log(obj.result);
// expected output: true
  • JSON.stringify()方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以替换值,或者如果指定了replacer是一个数组,可选的仅包括指定的属性。
//布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。
JSON.stringify({x: 5, y: 6});              
// "{"x":5,"y":6}"  

//undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)。
JSON.stringify([new Number(1), new String("false"), new Boolean(false)]); 
// '[1,"false",false]'  
JSON.stringify({x: undefined, y: Object, z: Symbol("")}); 
// '{}'

JSON.stringify([undefined, Object, Symbol("")]);          
// '[null,null,null]'   

JSON.stringify({[Symbol("foo")]: "foo"});                 
// '{}'
7、Ajax

Ajax 是 Asynchronous JavaScript And XML 的首字母缩写。Ajax并不是一种新的编程语言,而仅仅是一种新的技术,它可以创建更好、更快且交互性更强的 web 应用程序。Ajax 使用 JavaScript 在 web 浏览器与 web 服务器之间来发送和接收数据。通过与 web 服务器交换数据,而不是每当用户作出改变时重载整个 web 页面,Ajax 技术可以使网页更迅速地响应。

  • Ajax应用场景

    • 场景 1. 数据验证
    • 场景 2. 按需取数据
    • 场景 3. 自动更新页面
  • Ajax对象的创建过程

// 1. 创建连接 
var xhr = null; 
xhr = new XMLHttpRequest() 
// 2. 连接服务器 
xhr.open('get', url, true) 
// 3. 发送请求 
xhr.send(null); 
// 4. 接受请求 
xhr.onreadystatechange = function(){ 
  if(xhr.readyState == 4){ 
    if(xhr.status == 200){ 
      success(xhr.responseText); //执行success回调函数
    } else { 
    // fail fail && fail(xhr.status); 
    } 
  } 
}
  • XMLHttpRequest 对象用于在后台与服务器交换数据
    创建语法:
xhr = new XMLHttpRequest() 
  • onreadystatechange 事件:每当 readyState 改变时,就会触发 onreadystatechange 事件
    image.png
  • Ajax请求的回调函数:

    • beforeSend
      在发送请求之前调用,并且传入一个 XMLHttpRequest 作为参数。

    • error
      在请求出错时调用。传入 XMLHttpRequest 对象,描述错误类型的字符串以及一个异常对象(如果有的话)

    • dataFilter
      在请求成功之后调用。传入返回的数据以及 "dataType" 参数的值。并且必须返回新的数据(可能是处理过的)传递给 success 回调函数。

    • success
      当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。

    • complete
      当请求完成之后调用这个函数,无论成功或失败。传入 XMLHttpRequest 对象,以及一个包含成功或错误代码的字符串。

8 、LocalStorage

localStorage特性,这个特性主要是用来作为本地存储来使用的。在localStorage下一般浏览器支持的是5M大小,这个在不同的浏览器中会有所不同。localStorage只支持String类型的存储。

  • Localstorage的方法:
    localStorage.setItem(keyName, keyValue); 添加新的数据到Localstorage中存储
    localStorage.setItem('name', 'tws');
    localStorage.getItem(keyName);返回指定keyName的Localstorage中存储的值
    localStorage.getItem('name'); // "tws"
    localStorage.removeItem(keyName);从Localstorage中移除指定keyName的数据项
    localStorage.removeItem('name');
    localStorage.key(index);返回指定顺序的Localstorage中存储的键。
    localStorage.key(1); // "name"
    localStorage.clear(); 清除所有的本地Localstorage存储
  • localStorage的优势
    localStorage拓展了cookie的4K限制,为前端数据存储提供了新的思路
    localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽
  • localstorage的不足
    不同浏览器的存储大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性
    localStorage的值类型限定为String类型,许多使用场景下会有限制
    localStorage在浏览器的隐私模式下面是不可读取的
    localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡

相关文章

网友评论

      本文标题:JavaScript基础2

      本文链接:https://www.haomeiwen.com/subject/recnqqtx.html