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 自动被赋值为 undefined
(2)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>