JavaScript - 01 基础功能

本节:基础的JS功能的编写。

JACAscript

1.写一个函数,调用这个函数,函数带了2个参数。

(1)调用:account(10,20)

函数:

function account(price, number){

    var sum = price * number;

    return sum;

}

(2)

调用:hello(“张三”,10)

函数:
function hello(name,age){

document.write('你好'+name+age)}

2.使用jQuery写向后端发送数据,参数名参数值随意。

//button是id或者class

$("button").click(function(){

    $.post("发送的文件",

{

//传的参数

        name:"数值",

        url:"数值值"

    },

    function(data,status){  //成功之后传的函数名

        alert("数据: \n" + data + "\n状态: " + status);

    });

});

3.请输入数字。如果输入值不是数字,浏览器会弹出提示框

<p>请输入数字。如果输入值不是数字,浏览器会弹出提示框。</p>

<input id="demo" type="text">

<script>

function myFunction()

{

var x=document.getElementById("demo").value;

if(isNaN(x)||x.replace(/(^\s*)|(\s*$)/g,"")==""){

alert("不是数字");

}

}

</script>

<button type="button" οnclick="myFunction()">点击这里</button>

4.循环输出内容:John 现在 50 岁。

<p id="demo"></p>

<script>

var person = {

    firstName : "John",

    lastName  : "Doe",

    age       : 50,

    eyeColor  : "blue"

};

document.getElementById("demo").innerHTML =

person.firstName + " 现在 " + person.age + " 岁。";

</script>

  1. 点击出现弹窗

<button οnclick="myFunction()">点我</button>

<script>

function myFunction()

{

    alert("Hello World!");

}

</script>

局部变量在函数里面定义的变量,函数执行完后局部变量会自动销毁。函数外面使用无效

<p id="demo"></p>

<script>

var carName = "Volvo";   // 全局变量

myFunction();

function myFunction()

{

    document.getElementById("demo").innerHTML =

"我可以显示 " + carName;

var carName = "Volvo";  //在函数里面是局部变量

}

6.<button οnclick="getElementById('demo').innerHTML=Date()">现在的时间是?</button>

<p id="demo"></p>

7.输出的是false

<p id="demo"></p>

<script>

var x = "John";              // x 是字符串

var y = new String("John");  // y 是一个对象

document.getElementById("demo").innerHTML = x===y;

</script>

<p>=== 为绝对相等,即数据类型与值都必须相等。</p>

  1. 判断,三元运算符

<p>点击按钮检测年龄。</p>

年龄:<input id="age" value="98" />

<p>是否达到投票年龄?</p>

<button οnclick="myFunction()">点击按钮</button>

<p id="demo"></p>

<script>

function myFunction()

{

    var age,voteable;

    age=document.getElementById("age").value;

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

    document.getElementById("demo").innerHTML=voteable;

}

</script>

9.点击下面的按钮,只要 i 小于 5 就一直循环代码块。

<button οnclick="myFunction()">点击这里</button>

<p id="demo"></p>

<script>

function myFunction(){

    var x="",i=0;

    while (i<5){

        x=x + "该数字为 " + i + "<br>";

        i++;

    }

    document.getElementById("demo").innerHTML=x;

}

或者

function myFunction(){

var x="",i=0;

do{

x=x + "该数字为 " + i + "<br>";

    i++;

}

while (i<5)  

document.getElementById("demo").innerHTML=x;

}

</script>

10.循环输出数组

<script>

cars=["BMW","Volvo","Saab","Ford"];

var i=0;

for (;cars[i];){

    document.write(cars[i] + "<br>");

    i++;

}

</script>

  1. typeof 操作符返回变量或表达式的类型。
  2. <p id="demo"></p>

<script>

document.getElementById("demo").innerHTML =

typeof "john" + "<br>" +    //string

typeof 3.14 + "<br>" +        //number

typeof false + "<br>" +            //boolean

typeof [1,2,3,4] + "<br>" +      //object

typeof {name:'john', age:34};       //object

</script>

13.你可以设置为 null 来清空对象:

var person = null;           // 值为 null(空), 但类型为对象

,undefined 是一个没有设置值的变量。比如var person;就是有变量,但是没有值

null 和 undefined 的值相等,但类型不等:

14.在 JavaScript 中有 6 种不同的数据类型:String,number,boolean,object,function,symbol

3 种对象类型:Object,Date,Array

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

typeof "John"                 // 返回 string
typeof 3.14                   // 返回 number
typeof NaN                    // 返回 number
typeof false                  // 返回 boolean
typeof [1,2,3,4]              // 返回 object
typeof {name:'John', age:34}  // 返回 object
typeof new Date()             // 返回 object
typeof function () {}         // 返回 function
typeof myCar                  // 返回 undefined (如果 myCar 没有声明)
typeof null                   // 返回 object

NaN 的数据类型是 number,数组(Array)的数据类型是 object

日期(Date)的数据类型为 object,null 的数据类型是 object

未定义变量的数据类型为 undefined,如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都是 返回 object。

15.<p> String() 方法可以将数字转换为字符串。</p>

<p id="demo"></p>

<script>

var x = 123;

document.getElementById("demo").innerHTML =

    String(x) + "<br>" +

    String(123) + "<br>" +

    String(100 + 23);

</script>

  1. 无论前面是什么函数,最后都会执行finally函数

  finally {

    document.getElementById("demo").value = "";

  }

17.请输出一个 5 到 10 之间的数字

<input id="demo" type="text">

<button type="button" οnclick="myFunction()">测试输入</button>

<p id="message"></p>

<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;

    }

}

debugger 关键字用于停止执行 JavaScript,并调用调试函数

禁止this关键字指向全局对象。

function f(){

    return !this;} // 返回false,因为"this"指向全局对象,"!this"就是false

function f(){ 

    "use strict";

    return !this;} // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。

function f(){

    "use strict";

    this.a = 1;};

f();// 报错,this未定义

18.HTML 表单自动验证

HTML 表单验证也可以通过浏览器来自动完成。

如果表单字段 (fname) 的值为空, required 属性会阻止表单提交:

点击提交按钮,如果输入框是空的,浏览器会提示错误信息。

.<form action="demo_form.php" method="post">

  <input type="text" name="fname" required="required">

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

</form>

19.下面的函数用来检查用户是否已填写表单中的必填(或必选)项目。假如必填或必选项为空,那么警告框会弹出,并且函数的返回值为 false,否则函数的返回值则为 true(意味着数据没有问题):

<script>

function validateForm(){

var x=document.forms["myForm"]["fname"].value;

if (x==null || x==""){

  alert("姓必须填写");

  return false;

  }

}

</script>

</head

<body>

<form name="myForm" action="demo-form.php" οnsubmit="return validateForm()" method="post">

姓: <input type="text" name="fname">

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

</form>

20.下面的函数检查输入的数据是否符合电子邮件地址的基本语法。

意思就是说,输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号:

<script>

function validateForm(){

var x=document.forms["myForm"]["email"].value;

var atpos=x.indexOf("@");

var dotpos=x.lastIndexOf(".");

if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){

alert("不是一个有效的 e-mail 地址");

   return false;

}

}

</script>

</head>

<body>

<form name="myForm" action="demo-form.php" οnsubmit="return validateForm();" method="post">

Email: <input type="text" name="email">

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

</form>

21.输入数字并点击验证按钮:如果输入的数字小于 100 或大于300,会提示错误信息。

<input id="id1" type="number" min="100" max="300" required>

<button οnclick="myFunction()">验证</button>

<p id="demo"></p>

<script>

function myFunction() {

    var inpObj = document.getElementById("id1");

    if (inpObj.checkValidity() == false) {

        document.getElementById("demo").innerHTML = inpObj.validationMessage;

    } else {

        document.getElementById("demo").innerHTML = "输入正确";

    }

}

Property Description

checkValidity() 如果 input 元素中的数据是合法的返回 true,否则返回 false

setCustomValidity()

设置 input 元素的 validationMessage 属性,用于自定义错误提示信息的方法。

使用 setCustomValidity 设置了自定义提示后,validity.customError 就会变成true,则 checkValidity 总是会返回false。如果要重新判断需要取消自定义提示,方式如下:

setCustomValidity('')

setCustomValidity(null)

setCustomValidity(undefined)

  1. 输入数字并点击验证按钮,如果输入的数字大于 100 ( input 的 max 属性), 会显示错误信息。

<input id="id1" type="number" max="100">

<button οnclick="myFunction()">验证</button>

<p id="demo"></p>

<script>

function myFunction() {

    var txt = "";

    if (document.getElementById("id1").validity.rangeOverflow) {

        txt = "输入的值太大了";

    } else {

        txt = "输入正确";

    }

    document.getElementById("demo").innerHTML = txt;

}

</script>

//rangeOverflow 设置为 true, 如果元素的值大于设置的最大值。

function myFunction() {

    var txt = "";

var inpObj = document.getElementById("id1");

if(!isNumeric(inpObj.value)) {

txt = "你输入的不是数字";

} else if (inpObj.validity.rangeUnderflow) {

        txt = "输入的值太小了";

    } else {

        txt = "输入正确";

    }

    document.getElementById("demo").innerHTML = txt;

}

// 判断输入是否为数字

function isNumeric(n) {

    return !isNaN(parseFloat(n)) && isFinite(n);

}

23.ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const

let 声明的变量只在 let 命令所在的代码块内有效。

const 声明一个只读的常量,一旦声明,常量的值就不能改变。

在 ES6 之前,JavaScript 只有两种作用域: 全局变量 与 函数内的局部变量

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

24.重新定义变量

使用 var 关键字重新声明变量可能会带来问题。

在块中重新声明变量也会重新声明块外的变量:var x = 10; // 这里输出 x 为 10 { var x = 2; // 这里输出 x 为 2 } // 这里输出 x 为 2

let 关键字就可以解决这个问题,因为它只在 let 命令所在的代码块 {} 内有效var x = 10; // 这里输出 x 为 10 { let x = 2; // 这里输出 x 为 2 } // 这里输出 x 为 10

  1.  JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。
    文本可以被任何编程语言读取及作为数据格式传递。

"sites":[ {"name":"Runoob", "url":"www.runoob.com"}, {"name":"Google", "url":"www.google.com"}, {"name":"Taobao", "url":"www.taobao.com"} ]

JSON 字符串转换为 JavaScript 对象

通常我们从服务器中读取 JSON 数据,并在网页中显示数据。

简单起见,我们网页中直接设置 JSON 字符串 (你还可以阅读我们的 JSON 教程):

首先,创建 JavaScript 字符串,字符串为 JSON 格式的数据:

var text = '{ "sites" : [' +

'{ "name":"Runoob" , "url":"www.runoob.com" },' +

'{ "name":"Google" , "url":"www.google.com" },' +

'{ "name":"Taobao" , "url":"www.taobao.com" } ]}';

然后,使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象:

var obj = JSON.parse(text);

<h2>为 JSON 字符串创建对象</h2>

<p id="demo"></p>

<script>

var text = '{ "sites" : [' +

'{ "name":"Runoob" , "url":"www.runoob.com" },' +

'{ "name":"Google" , "url":"www.google.com" },' +

'{ "name":"Taobao" , "url":"www.taobao.com" } ]}';

obj = JSON.parse(text);

document.getElementById("demo").innerHTML = obj.sites[1].name + " " + obj.sites[1].url;

</script>

26.javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。

语法格式如下:

void func()

javascript:void func()

  <a href="javascript:void(0)">单击此处什么也不会发生</a>

27.

回调函数

回调函数就是一个函数,它是在我们启动一个异步任务的时候就告诉它:等你完成了这个任务之后要干什么。这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终。

<p>回调函数等待 3 秒后执行。</p>

<p id="demo"></p>

<script>

function print() {

    document.getElementById("demo").innerHTML="RUNOOB!";

}

setTimeout(print, 3000);

</script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值