学习笔记javascript

https://www.w3school.com.cn/js/js_examples.asp

一、webAPI是什么?

是浏览器提供关于操作浏览器功能和页面元素的API。比如:弹出框口:alert(“啊啊啊”)
一般有输入输出参数值值;

二、DOM

1.什么是dom

文档对象模型 文档接口:html和xml,改变网页内容,样式,结构。京东右滑。 文档: 元素: 结点:

问题

1.console.log=(p.innerHTML);审查没有console

2.获取元素

ID getElementbyid

id必须在script前面,不然找不到,在标签下面

<body>
	<div id="time">2019-9-9</div>
	<script>
	//1.getelmentbyid('id')中id是字符串
	//2.返回元素对象object
	//3.下面代码显示出标签<div id="time">2019-9-9</div>
	var timer = document.getElementById('time');
	console.log(timer);
	console.log(typeof timer);
	//4.检测数据类型typeof
	//5.console.dir 打印返回的元素对象
	console.dir(timer);
	</script>
</body>

根据标签名获取

getElmentsByTagName();

<body>
   <ul>
   	<li>五星红旗迎风飘扬1</li>
   	<li>五星红旗迎风飘扬2</li>
   	<li>五星红旗迎风飘扬3</li>
   </ul>
   <ol>
   	<li>五星红旗迎风飘扬1</li>
   	<li>五星红旗迎风飘扬2</li>
   	<li>五星红旗迎风飘扬3</li>
   </ol>
<script>
   //1.返回元素对象集合,以伪数组存储
   //2.返回元素对象object
   //3.下面代码显示出标签<div id="time">2019-9-9</div>
   var  lis = document.getElmentsByTagName('li');
   console.log(lis);
   console.log(lis[0]);
   //依次打印,遍历
   	for(var i =0; i<lis.length;i++){
   	console.log(lis[i]);
   	}
   	//页面只有1或者0个元素,返回为伪数组
   	//element.getelementbytagname('标签名');父元素必须是指定的单个元素
   	//element.getelementbytagname('ol');
   	//console.log(ol[0].getelementbytagname()
</script>
</body>

H5根据类别获取元素

getElementByClassName('类名');获得某些元素集合;下面得到是box1;box2;
		
querySelector('选择器');返回指定选择器的第一个元素对象;下面得到是box1;
<body>
   <div id="class">box1</div>
   <div id="class">box2</div>
   <ul>
<li>首页</li>
<li>产品</li>

</ul>
   <script>
   var  boxs = document.getElmentsByTagName('box');
   console.log(boxs);
}
</script>
</body>

要特别注意相等运算符**==**。JavaScript在设计时,有两种比较运算符:

第一种是**==**比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;

第二种是**===**比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。

由于JavaScript这个设计缺陷,不要使用比较,始终坚持使用=比较。

另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括它自己:

键值对

JavaScript的对象是一组由键-值组成的无序集合,例如:

var person = {
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null
};

要获取一个对象的属性,我们用对象变量.属性名的方式:

person.name; // ‘Bob’
person.zipcode; // null

slice

slice
slice()就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array:

var arr = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’];
arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: [‘A’, ‘B’, ‘C’]
arr.slice(3); // 从索引3开始到结束: [‘D’, ‘E’, ‘F’, ‘G’]
注意到slice()的起止参数包括开始索引,不包括结束索引。

如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array:

var arr = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’];
var aCopy = arr.slice();
aCopy; // [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’]
aCopy === arr; // false

JavaScript 显示数据

JavaScript 可以通过不同的方式来输出数据:

使用 window.alert() 弹出警告框。

<script>
window.alert(5 + 6);
</script>

使用 document.write() 方法将内容写到 HTML 文档中。

<body>
<h1>我的第一个 Web 页面</h1>
<p>我的第一个段落。</p>
<script>
document.write(Date());
</script>
</body>

使用 innerHTML 写入到 HTML 元素。

<script>
document.getElementById("demo").innerHTML = "段落已修改。";
</script>

使用 console.log() 写入到浏览器的控制台。

<script>
a = 5;
b = 6;
c = a + b;
console.log(c);
</script>

avaScript是弱类型编程语言,定义变量都使用 var 定义,与 Java 这种强类型语言有区别.

在定义后可以通过 typeOf() 来获取JavaScript中变量的数据类型.

// Number 通过数字字面量赋值

// Number 通过表达式字面量赋值

// String 通过字符串字面量赋值

// Array 通过数组字面量赋值

// Object 通过对象字面量赋值

访问对象属性

person.lastname;
person[“lastname”];

访问对象的方法

name=person.fullname();

创建和访问对象的方法

1.创建

fullName : function() //对象的方法
{
return this.firstName + " " + this.lastName;
}

2.访问

document.getElementById(“demo”).innerHTML = person.fullName();

<script>
var person = {
    firstName: "John",
    lastName : "Doe",
    id : 5566,
    fullName : function() //对象的方法
	{
       return this.firstName + " " + this.lastName;
    }
};
document.getElementById("demo").innerHTML = person.fullName();
</script>

js函数

<script>
function myfunction()
{
	var a=5;
	alert("hello world");
	return a;//返回值,遇到return才会停止,并返回值
}
</script>
<button onclick="myfunctionz()"></button>

js变量

局部变量函数运行后删除;全部变量页面关闭删除;
未申明变量的赋值变全局变量可配置属性,可删除;
例子:var2=2;
var var1=1;
delete var1;//失败
delet var2; //成功

function aaa()
{
var2 =2}
alert(var2);//可以调用全部变量

事件

<button onclick="getElementById('demo').innerHTML=Date()">现在的时间是?</button><p id = "demo"></p>
var test = document.getElementById("test");
test.onclick = function changeContent(){
    //......
}

点击按钮后会在下方 p 中 显示时间

添加事件句柄实例:

<input id="test" type="button" value="提交"/>
<script>
window.onload = function(){
    var test = document.getElementById("test");   
    test.addEventListener("click",myfun2);   
    test.addEventListener("click",myfun1);
}
function myfun1(){  
    alert("你好1");
}
function myfun2(){ 
    alert("你好2");
}
</script>

条件运算符

实例
如果变量 age 中的值小于 18,则向变量 voteable 赋值 “年龄太小”,否则赋值 “年龄已达到”。

voteable=(age<18)?"年龄太小":"年龄已达到";

如果三条表达式都不成立,则程序不会继续执行。

<script>
var minute=new Date().getMinutes();//获取当前时间数
let obj={
'24':()=>{document.write("24");},
'25':()=>{document.write("25");},
'26':()=>{document.write("26");},
}
obj[minute]();
document.write("如果当前时间分钟数不是24/25/26中的任意一个数,这一条应该不会被执行。");
</script>

for in用法

var obj = {a:1, b:2, c:3};

for (var prop in obj) {
console.log(“obj.” + prop + " = " + obj[prop]);
}

// Output:
// “obj.a = 1”
// “obj.b = 2”
// “obj.c = 3”

数组属于特殊对象

typeof[1,1,1,1] //返回为object

在 JavaScript 中

有 6 种不同的数据类型:

string
number
boolean
object
function
symbol

3 种对象类型:

Object
Date
Array

2 个不包含任何值的数据类型:

null
undefined

1、定义
 (1)undefined:是所有没有赋值变量的默认值,自动赋值。
 (2)null:主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址。
2、何时使用null?
当使用完一个比较大的对象时,需要对其进行释放内存时,设置为 null。
3、null 与 undefined 的异同点是什么呢?
共同点:都是原始类型,保存在栈中变量本地。
不同点:
(1)undefined——表示变量声明过但并未赋过值。
它是所有未赋值变量默认值,例如:
var a;    // a 自动被赋值为 undefined2)null——表示一个变量将来可能指向一个对象。
一般用于主动释放指向对象的引用,例如:
var emps = ['ss','nn'];
emps = null;     // 释放指向数组的引用

constructor属性 返回变量的构造函数

<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 
    "john".constructor + "<br>" +
    (3.14).constructor + "<br>" +
    false.constructor + "<br>" +
    [1,2,3,4].constructor + "<br>" +
    {name:'john', age:34}.constructor + "<br>" +
    new Date().constructor + "<br>" +
    function () {}.constructor;
</script>


返回结果:constructor 属性返回变量或对象的构造函数。

function String() { [native code] }
function Number() { [native code] }
function Boolean() { [native code] }
function Array() { [native code] }
function Object() { [native code] }
function Date() { [native code] }
function Function() { [native code] }

判断是否有数组

function isArray(myArray) {
return myArray.constructor.toString().indexOf(“Array”) > -1;
}
toString() 把数字转换为字符串:
indexOf()indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

正则表达式

<script>
function myFunction() {
    var str = "Visit Runoob!"; 
    var n = str.search(/Runoob/i);//找单词在第几位
    document.getElementById("demo").innerHTML = n;
}
</script>

使用 test()

test() 方法是一个正则表达式方法。

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

以下实例用于搜索字符串中的字符 “e”:

实例

var patt = /e/;
patt.test("The best things in life are free!");

字符串中含有 “e”,所以该实例输出为:

true

正则表达式表单验证实例:

/*是否带有小数*/
function    isDecimal(strValue )  {  
   var  objRegExp= /^\d+\.\d+$/;
   return  objRegExp.test(strValue);  
}  

/*校验是否中文名称组成 */
function ischina(str) {
    var reg=/^[\u4E00-\u9FA5]{2,4}$/;   /*定义验证表达式*/
    return reg.test(str);     /*进行验证*/
}

/*校验是否全由8位数字组成 */
function isStudentNo(str) {
    var reg=/^[0-9]{8}$/;   /*定义验证表达式*/
    return reg.test(str);     /*进行验证*/
}

/*校验电话码格式 */
function isTelCode(str) {
    var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
    return reg.test(str);
}

/*校验邮件地址是否合法 */
function IsEmail(str) {
    var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
    return reg.test(str);
}

JavaScript 错误 - throw、try 和 catch

<script>
var txt="";
function message(){
	try {
		adddlert("Welcome guest!");
	}
	catch(err) {
		txt="本页有一个错误。\n\n";
		txt+="错误描述:" + err.message + "\n\n";//err.message系统弹出错误消息
		txt+="点击确定继续。\n\n";
		alert(txt);
	}
}
</script>

** 清空输入框 finally 语句不论之前的 try 和 catch 中是否产生异常都会执行该代码块。
**

finally {
    document.getElementById("demo").value = "";
  }

throw 语句允许我们创建自定义错误。正确的技术术语是:创建或抛出异常(exception)。

<script>
function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "")  throw "值为空";
        if(isNaN(x)) throw "不是数字";
        x = Number(x);
        if(x < 5)    throw "太小";
        if(x > 10)   throw "太大";
    }
    catch(err) {
        message.innerHTML = "错误: " + err;//把抛出的err显示
    }
}
</script>

let和const

ES6 可以使用 let 关键字来实现块级作用域。

let 声明的变量只在 let 命令所在的代码块 {} 内有效,在 {} 之外不能访问。

{ 
    let x = 2;
}
// 这里不能使用 x 变量

循环作用域 使用 var 关键字:

实例
var i = 5;
for (var i = 0; i < 10; i++) {
    // 一些代码...
}
// 这里输出 i 为 10

const关键字

const 用于声明一个或多个常量,声明时必须进行初始化,且初始化后值不可再修改:

实例
const PI = 3.141592653589793;

什么是 JSON?

*JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。
文本可以被任何编程语言读取及作为数据格式传递。
JSON 英文全称 JavaScript Object Notation
JSON 是一种轻量级的数据交换格式。
JSON是独立的语言 *
JSON 易于理解。
JSON 是用于存储和传输数据的格式。

JSON 通常用于服务端向网页传递数据 。

设置锚点

href="#"与href="javascript:void(0)"的区别
# 包含了一个位置信息,默认的锚是#top 也就是网页的上端。

而javascript:void(0), 仅仅表示一个死链接。

在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id。

如果你要定义一个死链接请使用 javascript:void(0) 。

实例
<a href="javascript:void(0);">点我没有反应的!</a>
<a href="#pos">点我定位到指定位置!</a>
<br>
...
<br>
<p id="pos">尾部定位点</p>

void()仅仅是代表不返回任何值,但是括号内的表达式还是要运行,如

void(alert(“Warnning!”))

异步 AJAX

除了 setTimeout 函数以外,异步回调广泛应用于 AJAX 编程。有关于 AJAX 详细请参见:https://www.runoob.com/ajax/ajax-tutorial.html

XMLHttpRequest 常常用于请求来自远程服务器上的 XML 或 JSON 数据。一个标准的 XMLHttpRequest 对象往往包含多个回调:

实例
<script>
var xhr = new XMLHttpRequest();
 
xhr.onload = function () {
    // 输出接收到的文字数据
    document.getElementById("demo").innerHTML=xhr.responseText;
}
 
xhr.onerror = function () {
    document.getElementById("demo").innerHTML="请求出错";
}
 
// 发送异步 GET 请求
xhr.open("GET", "https://www.runoob.com/try/ajax/ajax_info.txt", true);
xhr.send();
</script>

jQuery–ajax

XMLHttpRequest 的 onload 和 onerror 属性都是函数,分别在它请求成功和请求失败时被调用。如果你使用完整的 jQuery 库,也可以更加优雅的使用异步 AJAX:

实例

$.get("https://www.runoob.com/try/ajax/demo_test.php",function(data,status){
    alert("数据: " + data + "\n状态: " + status);
});

函数声明后不会立即执行,会在我们需要的时候调用到。

Function() 构造函数

在以上实例中,我们了解到函数通过关键字 function 定义。

函数同样可以通过内置的 JavaScript 函数构造器(Function())定义。

实例
var myFunction = new Function("a", "b", "return a * b");

var x = myFunction(4, 3);

实际上,你不必使用构造函数。上面实例可以写成:

实例
var myFunction = function (a, b) {return a * b};

var x = myFunction(4, 3);

通过类名找到 HTML 元素

本例通过 getElementsByClassName 函数来查找 class=“intro” 的元素:

实例
var x=document.getElementsByClassName(“intro”);

增加监听事件

注意:不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。
<body>

<p>该实例使用 addEventListener() 方法在按钮中添加点击事件。 </p>
<button id="myBtn">点我</button>
<p id="demo"></p>
<script>
document.getElementById("myBtn").addEventListener("click", displayDate);
function displayDate() {
    document.getElementById("demo").innerHTML = Date();
}
</script>

</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值