JavaScript

html

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
  <meta name="author" content="weiyupeng">
  <meta name="time" content="2023/7/10 20:23">
  <meta charset="UTF-8">
  <title>Java Script</title>
</head>
<script>
  document.write("<h1>标题</h1>");
  document.write("<p>段落</p>");
  // 改变内容
  function f1() {
    const x = document.getElementById("para1");
    x.innerHTML="Hello JS !"
  }
  // 改变图像
  function changeImg() {
    const element = document.getElementById("img1");
    if (element.src.match("img1")) {
      element.src = "../image/img2.png";
    } else {
      element.src = "../image/img1.png";
    }
  }
  // 改变样式
  function changeStyle() {
    const element = document.getElementById("para2");
    element.style.color="green";
  }
  // 验证输入
  function checkNum() {
    const value = document.getElementById("input1").value;
    if (isNaN(value)) {
      alert("不是数字!");
    }
  }
</script>
<body>
<!--点击响应-->
<button type="button" onclick="alert('欢迎!')">点我!</button>

<p id="para1">Hello World !</p>
<button type="button" onclick="f1()">点我!</button><br>

<img id="img1" src="../image/img1.png" width="100" height="100">
<button type="button" onclick="changeImg()">换图片</button>

<p id="para2" style="color: red">段落</p>
<button type="button" onclick="changeStyle()">换颜色</button><br><br>

<input id="input1">
<button type="button" onclick="checkNum()">验证</button>

<!--连接外部js-->
<script src="../js/demo01.js"></script>
<p id="para33" onclick="f2()">点我</p>

<!--事件-->
<!-- 格式 <some-HTML-element some-event="JavaScript 代码"/> -->
<button onclick="function2()">function2</button><br><br>
<!--
  常用事件:
    onchange	HTML 元素改变
    onclick	用户点击 HTML 元素
    onmouseover	鼠标指针移动到指定的元素上时发生
    onmouseout	用户从一个 HTML 元素上移开鼠标时发生
    onkeydown	用户按下键盘按键
    onload	浏览器已完成页面的加载
  全部事件:
    https://www.runoob.com/jsref/dom-obj-event.html
-->

<!--提交验证-->
<input id="numb">
<button type="button" onclick="f7()">提交</button>
<p id="demo3"></p><br><br>

<!--验证API-->
<input id="id1" type="number" min="0" max="100" required>
<button onclick="f8()">提交</button>
<p id="demo2"></p><br><br>
<script>
  function f8() {
    let inpObj = document.getElementById('id1');
    if (inpObj.checkValidity()) {
      document.getElementById('demo2').innerText = '输入正确';
    } else {
      document.getElementById('demo2').innerText = inpObj.validationMessage;
    }
  }
</script>
<input id="id2" type="password" minlength="6" maxlength="16">
<button onclick="f9()">提交</button>
<p id="demo4"></p><br><br>
<script>
  function f9() {
    let inpObj = document.getElementById('id2');
    if (inpObj.checkValidity()) {
      document.getElementById('demo4').innerText = '输入正确';
      console.log('hello1111')
    } else {
      document.getElementById('demo4').innerText = inpObj.validationMessage;
      console.log('hello2222')
    }
  }
</script>

<!--void 代表没 不返回值-->
<a href="javascript:void(0)">单击此处什么也不会发生</a><br><br>
<a href="javascript:void(alert('Warning!!!'))">点我!</a><br><br>

<!--异步-->
<p id="demo5">hello</p>
<script>
  function f10() {
    document.getElementById('demo5').innerHTML = '<h1>hello</h1>'
  }
  // 三秒后执行
  setTimeout(f10, 3000);
</script>

</body>
</html>

javascript

/**
 * @Author: weiyupeng
 * @DateTime: 2023/7/10 20:20
 */

/*输出*/
//警告
// window.alert("警告");
//操作html元素
function f2() {
    document.getElementById("para33").innerHTML="外部 JavaScript 函数";
}
//写入
document.write("<br><br>"+new Date())
//写到控制台
console.log("控制台输出123")

/*语法*/
//Number
let number = 123;
number = 1.23
number = 123e4;
number = new Number(1);
number = Number(2);
//String
let str = 'abc'
str = "ABC"
let char1 = str[2] // C
let len = str.length // 很多函数和java一样
let text = `line1 多行文本
line2
line3
`
console.log(text)
//计算表达式
let multi = number * 10
multi = multi + 10
multi += 10
//数组
let arr = [1, 2, 3, 4, 5]
//对象
let obj = {name:'weiyupeng', age:27}
//函数
function myFunction(a, b) {
    return a * b;
}
// 变量:var是函数作用域,而let是块作用域
var name, age;
name = 'weiyupeng'
age = 27

/*数据类型*/
// 值类型(其实也是对象):String Number Boolean Null Undefined Symbol
// 对象类型:Object Array Function RegExp(正则) Date

// 查看数据类型
console.log(typeof true)
console.log(typeof [true, 123, 'qwe'])

// 数组
var arr2 = new Array()
arr2[0] = 123
arr2[1] = 'qwe'

// 对象,用json定义
var person = {
    name    :   'weiyupeng',
    age     :   27,
    // 对象内方法
    f1      :   function () {
        return 'function2 in person'
    },
    f2      :   function (s1, s2) {
        return "" + s1 + s2;
    }
}
person.age = 28
console.error(person.name)
console.info(arr2)
console.info(person.f1())
console.info(person.f2('qwe', '123'))

// Undefined
var a
console.log(typeof a) // Undefined
// Null
a = null
console.log(typeof a) // Object

// 声明新变量用 new 关键字
var carname = new String;
var x = new Number;
var y = new Boolean;
var car2 = new Array;
var person2 = new Object;

/*变量作用域*/
// window变量的属性,window可省略
var3 = 123
window.var3 = 123

function function2() {
    // 全局变量
    window.var4 = 123
    // 声明的就是局部变量
    let var5 = 234;
    console.count('qwe')
    console.log(typeof var4)
    console.log(Date())
    console.log(typeof 'Sat Jul 15 2023 15:51:50 GMT+0800') // string
}
let var5 = window.var4
// console.log(var4) // 报错 var4 is not defined
console.log(window.var4)
console.log(var5)

/*运算符*/
var var6 = 1;
console.log(var6 == 1) // true
console.log(var6 == '1') // true
console.log(var6 === 1) // true
console.log(var6 === '1') // false
console.log(var6 !== 1) // false
console.log(var6 !== '1') // true

console.log(undefined == null) // true
console.log(undefined === null) // false

/*typeof*/
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

/*constructor*/
"John".constructor                 // 返回函数 String()  { [native code] }
(3.14).constructor                 // 返回函数 Number()  { [native code] }
false.constructor                  // 返回函数 Boolean() { [native code] }
let arr3 = [1,2,3,4]
arr3.constructor              // 返回函数 Array()   { [native code] }
const o = {name: 'John', age: 34};
o.constructor  // 返回函数 Object()  { [native code] }
new Date().constructor             // 返回函数 Date()    { [native code] }
function f99() {}
f99.constructor         // 返回函数 Function(){ [native code] }

/*正则表达式*/
let patt = /js/i // js为表达式主体,i是修饰符(代表不区分大小写)
console.log('Hello Js !'.search(patt)) // 输出下标 6
console.log('Hello Css !'.search(patt)) // 输出 -1
console.log('Hello Js !'.search('Js')) // 输出 6
console.log('Hello Js !'.search('js')) // 输出 -1
console.log(patt.test('Hello Js !')) // 输出 true
console.log(patt.exec('Hello Js !')) // 输出 ['Js', index: 6, input: 'Hello Js !', groups: undefined]
let patt2 = new RegExp(/js/gi)
console.log('Hello Js js Js !'.search(patt2)) // 输出 6

/*
常见tips:
    1.switch 语句会使用恒等计算符(===)进行比较
    2.var x = 10 + "5";    // x 的结果为 "105",只要有string,结果就是string
    3.精度问题:
        var x = 0.1;
        var y = 0.2;
        var z = x + y            // z 的结果为 0.30000000000000004
        if (z == 0.3)            // 返回 false
      解决:用整数的乘除法
        var z = (x * 10 + y * 10) / 10;       // z 的结果为 0.3
    4.字符串断行要用反斜杠
        var x = "Hello \
        World!";
    5.数组可用名字作为索引,字典?
        var person = [];
        person["firstName"] = "John";
        person["lastName"] = "Doe";
        person["age"] = 46;
        var x = person.length;         // person.length 返回 0
        var y = person[0];             // person[0] 返回 undefined
        var z = person["lastName"]     // person["lastName"] 返回 "John"
    6.程序块作用域:
        for (var i = 0; i < 10; i++) {
            // some code
        }
        return i;
        // i 对于这个函数是全局的,作用域不像别的语言一样套娃
*/

/*表单*/
function f7() {
    let x, text;

    // 获取 id="numb" 的值
    x = document.getElementById("numb").value;

    // 如果输入的值 x 不是数字或者小于 1 或者大于 10,则提示错误
    if (isNaN(x) || x < 1 || x > 10) {
        text = "输入错误";
    } else {
        text = "输入正确";
    }
    document.getElementById("demo3").innerHTML = text;
}

/*验证API*/
// 见html

/*
this关键字:
    在方法中,this 表示该方法所属的对象。
    如果单独使用,this 表示全局对象。
    在函数中,this 表示全局对象。
    在函数中,在严格模式下,this 是未定义的(undefined)。
    在事件中,this 表示接收事件的元素。
    类似 call() 和 apply() 方法可以将 this 引用到任何对象。
*/

/*let 与 var 区别*/
var x = 10;
// 这里输出 x 为 10
{
    var x = 2;
    // 这里输出 x 为 2
}
// 这里输出 x 为 2

var y = 10;
// 这里输出 y 为 10
{
    let y = 2;
    // 这里输出 y 为 2
}
// 这里输出 y 为 10

/*JSON*/
// JSON Object
var json = {
    "name"  :   "weiyupeng",
    "age"   :   27
}
// JSON Array
var jsonArr = [
    {"name":"weiyupeng1","age":27},
    {"name":"weiyupeng2","age":28},
    {"name":"weiyupeng3","age":29}
]
posted @ 2023-07-15 22:07  鹏懿如斯  阅读(10)  评论(0编辑  收藏  举报