首页 > 编程语言 >Javascript

Javascript

时间:2024-04-01 20:12:26浏览次数:24  
标签:arr console log res Javascript var string

JS的引入方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js的引入方式</title>
    
</head>
<body>
    <!-- js的第一种引入方式 -->
   <script>
        alert("js的第一种引入方式")
    </script> 

    <!-- js的第二种引入方式 文件引入 -->
   <script src="myjs.js"></script> 
    
    <!-- js的第三种引入方式 -->
    <!-- onclick单击事件 -->
    <div onclick="alert(11)" >点我1</div>

    <!-- js的第四种引入方式 -->
    <a href="javascript:alert('你点我了么?')">点我2</a>

</body>
</html>

注释

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>注释/变量</title>
</head>
<body>
    <script>
        // ###1 注释分为两类: (1) 单行注释 (2) 多行注释
        // 我是单行注释
        /* 我是多行注释 */

        // ###2 变量
        /* var的用作是划分当前变量的作用域 不写var,默认声明全局的变量 */
        var a = 1;
        var a=1,b=2,c=3
        console.log(a);
        console.log(b,c)

        // ###3 变量的命名
        var $ = "特殊的变量名";
        var $abc = 111;
        console.log($);
        console.log($abc);

    </script>

</body>
</html>

JS数据类型

基本数据类型

Boolean

var a1 = true;  //小写
var a1 = false;
console.log( a1 , typeof(a1) )

Number

var num = 0b101;
var num = 0o127;
var num = 0xff;
var num = 1000;
var num = 3.13;
var num = 3.13e2;

// Infinity  无穷大
var num = 3.13e999999999999999999999999999999999999;

// -Infinity 负无穷大
var num = -3.13e999999999999999999999999999999999999;
console.log(num , typeof(num) )

// NaN =>  not a number 不是一个数字
/*
            1.NaN和任何数字计算都是NaN
            2.与NaN做比较,除了NaN!=NaN为真,剩下都是false
*/
var num = 10 - "abc"; //NaN
var num = NaN + 1
var num = NaN == NaN
var num = NaN != NaN; // true 
var num = NaN > 100;  // false
var num = isNaN(NaN); // true
console.log(num , typeof(num))

String

	    // 单引号''
        var string = 'I love js';

        // 双引号""
        var string = "i love python very much";

        // 在转义字符前面加\,防止转义原型化输出
        var string = "我爱你,\\n 中国"
        console.log(string)

        // 反引号`` 1.支持跨行 2.解析变量
        // 1.支持跨行
        var string = `
        <ul>
            <li>111</li>
        </ul>
        `
        // 2.解析变量 ${变量名}
        var name = "赵沈阳";
        var string = `${name}`;
        
        console.log(string , typeof(string))   // 赵沈阳

Undefined

null

[!NOTE]

​ 以上两者属于设计出继承object的对象

引用数据类型

object

​ 所有引用数据类型继承object

var obj = new Object()
var obj = {}        
console.log(obj,typeof(obj))

字典格式

var obj = {"a":1,"b":2}
console.log(obj , typeof(obj))


//js对象,可以在类外添加成员
obj.name = "张三";
console.log(obj , typeof(obj));

Array

var arr = new Array();
var arr = [];
arr[0] = 10;
arr[1] = 11;
arr[2] = 12;
var arr = [10,11,12,13];
console.log(arr , typeof(obj));

function

function func(){
console.log("我是函数");
}
func()
console.log(func,typeof(func))

Date

强制转换

boolean

/*
            //布尔类型为假的七中情况:
            0 0.0 '' NaN undefined null false 
 */
var a = false;
var a = null;
var a = 0;
var a = 0.0;
var a = '';
var a = NaN;
var a = undefined;

// 注意点 空数组 空对象都是true
var a = []; // true
var a = {}; // true
var res = Boolean(a);
console.log(res , typeof(res));

Number

parseInt

// 1. parseInt 强制转换成整型 
/* 要求: 必须数字开头; */
var num = 1.934567; //1
var num = "abc";    //NaN
var num = "123";    //123
var num = "123abc"; //123
var num = "abc123"; //NaN
var num = "1.34abc" //1
var num = []        //NaN 
var num = false        //NaN 
var res = parseInt(num); 
console.log(res ,typeof(res))

parseFloat

// 2.parseFloat 强制转换成浮点型
/* 要求: 必须数字开头; */
var num = 100; //1
var num = "abc";    //NaN
var num = "123";    //123
var num = "123abc"; //123
var num = "abc123"; //NaN
var num = "1.34abc"; //1.34
var num = {};        //NaN 
var num = true;
var res = parseFloat(num); 
console.log(res ,typeof(res))
Number
var a = false
var a = "123.456"; //123
var res = Number(a)    // string ——》  number
console.log(res ,typeof(res))
String
/*
	 字符串的强转是在原有类型的两边套上引号,表达字符串类型;
*/
var a = 100;
var a = 4.89;
var a = "abc";
var a = [];
var a = undefined;
var a = null;
var a = NaN;
var res = String(a);
console.log(res , typeof(res))

自动类型转换

// 1.Number+Boolean
console.log(res ,typeof(res))  // 11
var res = 3.4 + true;
console.log(res ,typeof(res))  // 4.4
var res = 10 + 3.1;
console.log(res ,typeof(res))  // 13.1

// 2.Number+Boolean+String (对于字符串来说 +号意味着拼接)
var res = true + "100";
console.log(res ,typeof(res))  //true100
var res = 100 + "101" + 100;
console.log(res,typeof(res))   //100101100

// 3.除了+号,剩下的都可以做运算(必须是数值)
var res = 100 - "101";
console.log(res ,typeof(res)) //-1
var res = 100 - "99abc";
console.log(res,typeof(res))  //NAN

运算符

// (1) ++ -- 递增,递减
// num++ 先赋值在自增
var num = 100;
var res = num++;
console.log(res , typeof(res));
var res = num++;
console.log(res , typeof(res));
// ++num 先自增在赋值
var num = 100;
var res = ++num;
var res = ++num;
console.log(res , typeof(res));

// (2) === !== (全等于,不全等于)比较两样东西1.比较值的大小 2.比较值的类型
var res = "1" == 1;
console.log(res , typeof(res));
var res = "1" === 1;
var res = "1" !== 1;
console.log(res , typeof(res));

// (3) && => and  ,  || => or   ,  ! => not
var num = 8
if(num > 5 && num <10){
	console.log("ok1~");
}

if(num>10 || num < 3){
	console.log("ok2~");
}
var num = 0
if(!num){
	console.log("ok3~");
}

// (4) 三元(目)运算符
var age = 18;
var res = age >= 18 ? "成年人":"儿童";
console.log(res)

for的特性

for( var i in Iterable ) 获得索引号

 console.log("<===============第一组===================>")
//for( var i in Iterable )  获取的是数组中的索引号;
var arr = ["孟浩然","赵子龙","康乃馨","张飞","汪精卫"];

for(var i in arr ){
    console.log(i);
    console.log(arr[i]);
}

console.log("<===============第二组===================>")
// 获取的是js对象中的键
var dic = {"a":"王同培","b":"马村你","c":"张宇"};
for(var i in dic){
    console.log(i)       
    console.log(dic[i]) ;    
}

for( var i of Iterable ) 获得索引号

console.log("<===============第三组===================>")
// ### 4.for( var i of Iterable ) 获取的是数组中的值; [等价于python中 for i in Iterable:]
for(var i of arr){
    console.log(i);
}

console.log("<===============第四组===================>")
// 注意点: for(var i of dic) 不能遍历js对象[字典] error
/*
        var dic = {"a":"王同培","b":"马村你","c":"张宇"};
        for(var i of dic){
            console.log(i)     
        }
        */
// 字符串的遍历:
for(var i of "abcdefg"){
    console.log(i)
}

函数

普通函数

//普通函数 (存在预加载机制,提前把函数加载到内存中,然后代码整体在执行)
func1()
function func1(){
	console.log(111);
}

匿名函数

// 方式二 匿名函数(匿名函数没有预加载价值,必须先定义在调用)
// func2() error
    var func2 = function(){
    console.log('我是func2~');
}
func2();

使用new创建对象函数

var func3 = new Function("alert('我是func3~');alert('woshi3333');");
console.log(func3,typeof(func3));
// func3();

// 使用关键字
var func4 = new Function("x","y","alert(x+y)");
func4(5,6);

闭包函数

function func5(){
    var a = 100;
    function func6(){
        console.log(a,"<===>");
        return "我是闭包函数";
    }
    return func6;
}

func = func5();
res = func();
console.log(res);

箭头函数

function mysum(x,y){
    return x+y;
}
res = mysum(5,6)
console.log(res);

//	箭头函数
var mysum = (x,y)  =>  {return x+y;}        
var res = mysum(5,6);
console.log(res);

函数的参数只有普通位置参数,默认参数

[!NOTE]

js中的形参实参不匹配不会报错

arguments

​ 自动收集所有的实参

function func8() {
// console.log(a,b)
// console.log(arguments)
var total = 0;
for(var i of arguments){
    total += i;
    console.log(i);	
}
return total;
}
res = func8(1,100,2,3,4,5,56,6);
console.log(res);

函数的调用

正常调用

function func(){
            console.log("函数正在执行 ... ");
        }

// 1.正常调用
 func();

函数立即执行

(function func2(){
    console.log("函数正在执行2 ... ")
})();

!function(){
    console.log("我在执行4 ... ");
}();

~function(){
    console.log("我在执行5 ... ");
}();

//匿名函数的立即执行
(function(){
    console.log("匿名函数正在执行3 ... ")
})();

对象

定义对象方法一

var obj = new Object();
console.log(obj , typeof(obj))

//类外添加成员
obj.name = "孙坚";
obj.age = 18;
obj.weight = "200斤";
obj.eat = function(){
    alert("我会吃竹子");
}
console.log(obj.name)

obj.eat();

定义对象方法二

var obj = {
    name:  "张三",
    age : 20,
    sex   : "男性",
    drink : function(something){
        console.log("我会喝牛栏山",something);
    }
}

//调用对象
console.log(obj["age"])  // obj[Key]
//调用函数
obj["drink"](1)  

定义对象方法三 似类

function Person(name,age,sex){
    //this 为 本对象的指针
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.func = function(){
        console.log("我是func");
        return this.sex;
    }
}

var obj1 = new Person("刘一风",30,"男性");
var obj2 = new Person("张三风",90,"女性");

通用调用方式

//对象.属性
//对象.函数()

遍历调用

// 打印对象的key值
for(var i in obj1){
    console.log(i)  //type is string
}  
 
// with(对象的属性) 语法可以直接获取对象成员的值
with(obj1){
    console.log(name);
    console.log(sex);
    console.log(age);
    res = func();
    console.log(res);
}

//遍历对象中的数据;
for(var i in obj1){
    with(obj1){
        console.log(eval(i)) // 通过eval解析string
    }
}

Json对象

stringfy

var data = {
    'name':"文东",
    age:20,
    "sleep":function(){
    alert("文东一天睡23小时,还有一个小时上厕所.");
	}
}
// js对象 => json格式的字符串
var res = JSON.stringify(data);
cons  e.log(res , typeof(res)); // {"name":"文东","age":20} 

parse

// json格式的字符串 => js对象

res = '{"name":"东东","age":30}';  
var res2 = JSON.parse(res);
console.log(res2,typeof(res2));

字符串对象

length

var string = "to be or not to be";
// 获取字符串长度 length	
var res = string.length
var res = string[-1] // js中不可以
console.log(res)

trim

// 清除两侧的空白 trim
var res = string.trim()
console.log(string)
console.log(res)

indexof

// 获取首次出现的位置 indexOf  
/*找不到返回-1*/
var string = "to be or not to be";
var res = string.indexOf("z")
console.log(res)

lastIndexof

// 最后一次出现的位置 lastIndexOf 
/*找不到返回-1*/
var res = string.lastIndexOf("zzz")
console.log(res)

concat

// 连接字符串	concat	 [ python的 os.path.join  + ]
var res = string.concat("d:\\","python32\\","day42");
console.log(res);

slice

// 截取字符串 slice
/* string.slice(开始值,结束值) 字符串的切片  留头舍尾  [支持逆向下标]*/
var string = "11122233e or not to be";
var res = string.slice(1,7);
var res = string.slice(-5,-1);      // to b
// var res = string.slice(-5,-10); //截取不到返回空
console.log(res)

substr

// 截取字符串 substr
/* string.substr(开始值,截取几个) */
var string = "11122233e or not to be";
var res = string.substr(3,4)
console.log(res)

split

// 拆分字符串 split  [ python的 split ]
var string = "11122233e or not to be";
var res = string.split(" ")
console.log(res)

toUpperCase

// 全部大写
var string = "11122233e Or noT tO be";
res = string.toUpperCase();
console.log(res)

toLowerCase

// 全部小写
var string = "11122233e Or noT tO be";
res = string.toLowerCase();
console.log(res)
// 匹配第一次找到的索引位置,找不到返回-1
var string = "aaabbb oldaoy ccc"
 /* /正则表达式/修饰符 g:全局匹配 i:不区分大小写 m:多行匹配  */
var res = string.search(/oldboy/) 
console.log(res) //7

match

// 返回匹配的数据
/* /正则表达式/修饰符 g:全局匹配 i:不区分大小写 m:多行匹配  */
var string = "我的电话是 : 13838384388 你的电话是: 13854381438"
var res = string.match(/\d{11}/);  // 匹配一个
var res = string.match(/\d{11}/g); // 匹配多个,(需要修饰符加上g) 
console.log(res) // 一个对象
console.log(res[0]) //找到的第一个值
console.log(res[1]) // 全局匹配的找到的第二个值

replace

//字符串替换 replace
/* replace默认只替换一次 */
var string = "to be or not to be";
var res = string.replace("to","two")
console.log(res)      // two be or not to be

实现replace全替换

方法一
function myreplace(string,a,b){
    /*
                找最后一个to,如果找不到返回-1
                如果能找到就不停的进行替换,直到-1为止,循环终止;
   */
    while(string.IndexOf(a) != -1){
        console.log(1)
        string = string.replace(a,b);
    }
    return string;
}  

var string = "to be or not to be";   
var res = myreplace(string,"to","two")
console.log(res) // two be or not two be
方法二
var string = "to be or not to be";
var res = string.replace(/to/g,"two");    //正则全局搜索所有的替换
console.log(res)

数组对象

定义

var arr = Array();
var arr = Array(10,11,12);
var arr = [15,16,17]
console.log(arr , typeof(arr))

增加

var arr = [];
arr[0] = 10;
arr[1] = 11;
arr[2] = 12;

// js特征:允许在一个临时的索引值上插入数据; 
arr[10] = 50; // 跨越3-9下标
console.log(arr)
console.log(arr[5])

push

// 从数组的最后插入元素  
var arr = [];
var res = arr.push(111);
var res = arr.push(222);
var res = arr.push(333);
console.log(res,arr)

unshift

// unshift 从数组的前面插入元素 
var arr = [100,101];
var res = arr.unshift(1);
var res = arr.unshift(333);
console.log(res , arr);

concat

// concat 迭代追加数据 
var arr1 = [1,2,3]
var arr2 = ["你好","我好","她也好"]
var res = arr1.concat(arr2)
console.log(res, typeof(res));

删除

delete

// delete 删除
/* 把值删掉了,原位置用空来取代,返回undifined */
var arr = [1, 2, 3, "你好", "我好", "她也好"];
delete arr[1];
console.log(arr);
console.log(arr[1])

pop

// 从后面删除
var arr = [1, 2, 3, "你好", "我好", "她也好"];
delete arr[1];
console.log(arr);
console.log(arr[1])

shift

// (shift 从前面删除
var arr = [1, 2, 3, "你好", "我好", "她也好"];
var res = arr.shift()
console.log(res , arr)

改查

splice

// 特别splice  从指定位置往后进行删除或者添加
/* arr.splice(从第几个位置开始,删除几个,[可选的是添加的元素])   */
var arr = [1, 2, 3, "你好", "我好", "她也好"];
// 从第二个2位置开始,删除2个
var res = arr.splice(2,2)
console.log(res , arr)

// 从第二个2位置开始,删除0个,添加,"hello","world"
var arr = [1, 2, 3, "你好", "我好", "她也好"];
var res = arr.splice(2,0,"hello","world")
console.log(res , arr)

其他

join

// 拼接字符串  join
var arr = ["you","can","you","up"];
var res = arr.join("#")
console.log(res)

reverse

// 数组元素反转 reverse
var arr = [100,200,3,150];
var res = arr.reverse();
console.log(res);

slice

// 截取数组的一部分 slice 
/* arr.slice(开始值,结束值) 数组的切片  留头舍尾  [支持逆向下标]*/
var arr = ["宋健","何旭彤","刘利伟","高雪峰","戈隆","王致和","马生平"]
var res = arr.slice(2)
var res = arr.slice(2,4)
var res = arr.slice(-3,-1)
console.log(res);

sort

// 排序 默认升序 sort 对字符串形式排序
var arr = ["1","2","3","4","9","22","21"];
var res = arr.sort()
console.log(res)


// 对数字排序
var arr = [100,1,2,3,4,9,22,21];
// sorted 里面的参数是一个函数,通过函数进行升序或者降序排序;
/* return 1代表交换位置,如果return -1 代表不交换位置 */
var res = arr.sort(function(a,b){
 	return a-b;
});
console.log(res)

数学对象

round

//四舍五入round
var res = Math.round(3.5)
var res = Math.round(2.5)
var res = Math.round(2.31)
console.log(res)

max/min

//最大值 max        
var res = Math.max(1,2,3,4,34343);
//最小值 min
var res = Math.min(1,2,3,4,34343);
//绝对值 abs
var res = Math.abs(-90);
console.log(res)

abs

//绝对值 abs
var res = Math.abs(-90);
console.log(res)

floor/ceil

//向下取整 floor 地板
var res = Math.floor(3.001)
//向上取整 ceil 天花板
var res = Math.ceil(3.990)

pow

//幂运算 pow
var res = Math.pow(2,3)

sqrt

//开方运算 sqrt             
var res = Math.sqrt(9)
console.log(res)

random

//获取从0到1随机值   0<x<1
var res = Math.random()
console.log(res)


//获取1~10的随机值 1 <= x <= 10
var res = Math.ceil(Math.random() * 10 )
console.log(res)

// 获取从 m 到 n 的随机值 

function randrange(m,n){
    return Math.ceil(Math.random() * (n-m+1) ) + (m - 1);
}

日期对象

getFullYear

getMonth

getDate

getHours

getMinutes

getSeconds

  var obj = document.getElementById("clock");
        console.log(obj)
        function func(){
            var d = new Date();
            console.log(d);
            // 获取年份
            var year = d.getFullYear()
            // 获取月份 月份范围 0 ~ 11 0代表1月份
            var month = d.getMonth()
            // 获取日期
            var date = d.getDate()
            // 获取小时
            var hour = d.getHours()
            // 获取分钟
            var minutes = d.getMinutes()
            // 获取秒数
            var seconds = d.getSeconds()
            strvar= `现在的时间是: ${year}年-${month+1}月-${date}日  ${hour}:${minutes}:${seconds}`;
            console.log(strvar);
            obj.innerHTML = strvar
            console.log(minutes, typeof(minutes));

            // 清除定时器的效果
            if(minutes == 8){
                clearInterval(id);
            }

        }

        var id = window.setInterval(func,1000)

BOM对象

alert

//弹出警告框 
window.alert('你好')

confirm

// 确认弹窗
var res = window.confirm("确认弹窗")
// res is true or false

prompt

var res = window.prompt("请输入您的银行密码:")
console.log(res);

close

// 关闭浏览器窗口
window.close();	

innerHeight/innerWidth

// innerHeight innerWidth 获取浏览器窗口内部的宽和高
console.log(`浏览器窗口内部的宽度${window.innerWidth}`)
console.log(`浏览器窗口内部的高度${window.innerHeight}`)

定时器

setinterval

settimeout

/*
            # 定时器种类(两种):基于单线程的异步并发程序;
            window.setInterval(函数名,间隔时间(毫秒))   // 定时执行多次任务
            window.setTimeout(函数名,间隔时间(毫秒))    // 定时执行一次任务
            
            retrun 定时器的序号

            window.clearInterval(id号)  // 清除定时器 setInterval
            window.clearTimeout(id号)   // 清除定时器 setTimeout

*/
console.log(navigator);
console.log(navigator.platform)  // 判断是pc端还是移动端
console.log(navigator.userAgent) // 在爬虫程序中,可以伪造成浏览器进行数据爬取,绕开服务端的反爬机制;

History


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button onclick="func1()">查看历史对象</button>
    <button onclick="func2()">跳转到上一页</button>
    <button onclick="func3()">跳转到下一页</button>
    <button onclick="func4()">当前页面刷新</button>
    <script>
        function func1(){
            console.log(history);
        }

        function func2(){
            history.go(-1);
        }

        function func3(){
            // history.go(1);
            history.go(2);
        }

        function func4(){
            history.go(0);
        }
    </script>
    
</body>
</html>

location

console.log(location);
console.log(`协议:${location.protocol}`);
console.log(`ip端口号:${location.host}`);
console.log(`端口号:${location.port}`);
console.log(`路径:${location.pathname}`);
console.log(`获取锚点:${location.hash}`);
console.log(`获取地址栏参数:${location.search}`);
console.log(`完全地址:${location.href}`)

跳转

// location.href = "http://www.baidu.com";方法一
location.assign("http://www.jd.com");

刷新

location.reload();

过一秒再刷新

// 过一秒在刷新页面
function func4(){
    setTimeout(func3,1000);
    console.log("我执行了...")
}

DOM对象

<body>
    <div id="box">
        <p class="p1" >张三</p>
        <p class="p2">李四</p>
        <p class="p3">赵刘</p>
        <p name="ceshi1"></p>
        <p name="ceshi1"></p>
    </div>

    <div>
        <input type="text" name="username" />
        <input type="password" name="pwd" />
        
        <p1>112233</p1>
        <box>55666</box>
        
</body>

document

返回整个文档对象

image-20240330132652070

document.documentElement

返回整个文档的Html部分

image-20240330132745533

document.getElementById

// 通过id获取div节点对象
var box = document.getElementById("box");
console.log(box);

getElementsByClassName

// 通过类名获取节点对象 [返回的是数组]
var p2 = document.getElementsByClassName("p2");
console.log(p2 , typeof(p2));

document.getElementsByTagName

// 通过标签获取节点对象 [返回的是数组]
var p = document.getElementsByTagName("p");
console.log(p)
console.log(p[1])

document.getElementsByName

// 通过标签身上的name属性 [返回的是数组] 一般用在input表单中
var ceshi1 = document.getElementsByName("username")[0];
console.log(ceshi1);

querySelector

// 通过css选择器获取对应的元素节点        
// querySelector ,只获取找到的第一个;
var p1 = document.querySelector(".p1");
console.log(p1)
var box = document.querySelector("#box");
console.log(box)

querySelectorAll

// querySelectorAll 获取所有找到的元素节点,返回数组
var all = document.querySelectorAll("input[name=username]")[0];
console.log(all);
<div id="box">
<p>
    <input type="text" name="username" />
    <input type="password" name="pwd" />
</p>
<p class="p1" >张三</p>
<p class="p2">李四</p>
<p class="p3">赵刘</p>
<p name="ceshi1"></p>
<p name="ceshi1"></p>

children

console.log(document)
console.log(document.documentElement); // html
console.log(document.documentElement.children)  // html 中的 head 和 body

parentElement

var zs = document.querySelector(".p1");
console.log(zs);
var div = zs.parentElement;
console.log(div)

image-20240330134546769

[!NOTE]

标签称为元素

nextSibling

 // 获取下一个节点对象nextSibling
console.log(input1.nextSibling.nextSibling);
<!-- <input type="text" name="username" /> 后有空格 空格是下一个节点对象 所以需要取两次变成下一个标签-->

nextElementSibling

// 获取下一个元素节点对象 nextElementSibling
var input2 = input1.nextElementSibling;

previousSiblin

console.log(input2.previousSibling)

previousElementSibling

// 获取上一个元素节点对象 previousElementSibling
console.log(input2.previousElementSibling)

innerHTML

// 获取标签里面所有内容 [标签 + 文本]
// 修改时候可以标签的操作

InnerText

// 获取标签里面所有内容 [标文本]
// 修改时候可以控制文本

document.write

// document.write 把数据以字符串的形式展现在浏览器
document.write(p);

小实验控制输入密码

// 效果1: 显示隐藏密码
var password = document.querySelector("input[name=pwd]")
console.log(password);
console.log(password.type);
console.log(password.name);
console.log(password.value); 
console.log(password.className)

function change(){
    var btn = document.querySelector("#btn")
    console.log(btn);
    if(password.type=="password"){
        password.type = "text";
        btn.innerHTML = "点我隐藏密码";
    }else{
        password.type= "password";
        btn.innerHTML = "点我显示密码";
    }
}

小实验点击更换图片

var img = document.querySelector("img");
console.log(img)
img.onclick = function(){
    console.log(img.src) // http://127.0.0.1:5500/images/oneal1.jpg
    var arr = img.src.split("/")
    imgname = arr[arr.length - 1]
    console.log(arr , imgname);

    if(imgname == "oneal1.jpg"){
        img.src = "images/bakeli.jpg";
    }else{
        img.src = "images/oneal1.jpg";
    }

可以抓住标签对象直接绑定匿名函数

小实验控制多选的选择

// 获取btn节点对象
var btn1 = document.querySelector("#ul1 li:nth-child(1) button");
var btn2 = document.querySelector("#ul1 li:nth-child(2) button");
var btn3 = document.querySelector("#ul1 li:nth-child(3) button");
// 全选
btn1.onclick = function(){
    // 获取#ul2 li 里的input
    /*
                var data_lst = document.getElementById("ul2").getElementsByTagName("input");
                console.log(data_lst)
            */
    var data_lst = document.querySelectorAll("#ul2 li input");
    console.log(data_lst)
    // 获取数组当中每一个input节点元素对象
    for(var input of data_lst){
        //console.log(input.checked)
        // 设置节点input的checked属性为true;
        input.checked = true;                
    }
}

// 不选
btn2.onclick = function(){
    var data_lst = document.querySelectorAll("#ul2 li input");
    console.log(data_lst)
    // 获取数组当中每一个input节点元素对象
    for(var input of data_lst){
        //console.log(input.checked)
        // 设置节点input的checked属性为true;
        input.checked = false;                
    }
}

// 反选
btn3.onclick = function(){
    var data_lst = document.querySelectorAll("#ul2 li input");
    console.log(data_lst)
    // 获取数组当中每一个input节点元素对象
    for(var input of data_lst){
        if(input.checked === true){
            input.checked = false;
        }else{
            input.checked = true;
        }
    }
}

JS控制Css属性

js的dom对象获得相关的行内css属性

// 获取方法一 使用驼峰
console.log(box.style.width);
console.log(box.style.backgroundColor);
// 获取方法二  使用key
console.log(box.style["width"]);
console.log(box.style["background-color"]);
console.log(box.style["font-size"]);

getComputedStyle

// 获取方法三 getComputedStyle 获取该节点对象的所有样式 写在style 标签中

console.log( window.getComputedStyle(box).fontSize );
console.log( window.getComputedStyle(box)["font-size"]);

静态绑定

// html 中
<button onclick="func1()">按钮1</button>
<div class="box"></div>



var box = document.getElementsByClassName("box")[0];
var t;
console.log(box);
function func1(){
    var left = parseInt(window.getComputedStyle(box).left)
    console.log(left ,typeof(left));
    // console.log(box.style.left);
    t = setInterval(function(){
        left += 10;
        box.style.left  = `${left}px`;
    } , 50)
} 

动态绑定

// onm ouseover 鼠标指针悬停在指定元素上时触发
box.onmouseover = function(){
clearInterval(t);
}
// onm ouseout  鼠标指针离开指定元素时触发
box.onmouseout = function(){
func1()
}

模态框的实现


<!DOCTYPE html>
    <html lang="en">
        <head>
        <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
                <title>模态框</title>
<style>
                .box {
                    position:fixed;
                    width:100%;
                    height:100%;
                    top:0px;
                    background-color: greenyellow;
                    display: none;   /* 隐藏模态框*/
                }

                .content
                {            
                    border:solid 1px red;
                    width:500px;
                    height:500px;
                    background-color:tan;
                    margin:auto;
                    margin-top:14%;        
                }

</style>

</head>
	
<body>
<button id="login">登录</button>

<div class="box">
       <div class="content" >
       <span class="close">X</span>
   	    <br/>
        <span>账号: <input type="text"  /></span>
   	    <br/>
        <span>密码: <input type="password"  /></span>
       </div>
</div>

    <script>
                var btn = document.getElementById("login");
                var box = document.querySelector(".box");
                var close = document.querySelector(".close");
                btn.onclick = function(){
                    box.style.display = "block"; /* 点击时 显示*/ 
                }
                close.onclick = function(){
                    box.style.display = "none";
                }
    </script>
</body>
</html>

Ajax

js实现

AJAX异步数据传输:

ajax,谐音“阿贾克斯”,是英文Asynchronous Javascript And XML,
中文翻译为js与xml的异步传输技术.

效果:在不刷新页面的情况下,请求到后台数据.也叫网页无刷新技术.

ajax本质就是利用javascript提供的XMLHttpRequest对象 ,
代替浏览器地址中传递参数请求服务器的过程

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js版本的 ajax 网页无刷新技术 </title>
</head>
<body>
    <input type="text" name="city" value="" /> <button id="btn">查询</button>
    <div id="info"></div>
    <script>
        var btn = document.getElementById("btn");
        btn.onclick = function(){
            var city = document.querySelector("input[name=city]");
            console.log(city.value);      // 获得city = 北京       

            // 1.创建ajax请求对象
            var xhr = new XMLHttpRequest();
            console.log(xhr)
            
            // 2.打开连接
            // 获取的地址:http://wthrcdn.etouch.cn/weather_mini?city=北京
            // 请求方式 地址 第三个参数可选 true 或者 false  默认true 代表异步 false 代表同步 缺省异步
            xhr.open("get",`http://wthrcdn.etouch.cn/weather_mini?city=${city.value}`)  // false 同步程序 true 异步程序
            // 3.发送请求 向服务器发送请求
            xhr.send();
            
            /*
                readyState 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

                0: 请求未初始化
                1: 服务器连接已建立
                2: 请求已接收
                3: 请求处理中
                4: 请求已完成,且响应已就绪
            */

            // 4.每当 readyState 改变时,就会触发 onreadystatechange 事件
            xhr.onreadystatechange = function(){
                // 服务端的状态码为4 ,  客户端的状态码为200 , 代表数据已经传输完毕;
                if(xhr.readyState == 4){
                    if(xhr.status == 200){
                        // console.log(xhr.responseText);
                        
                        // 解析json格式的字符串 => js对象
                        var res = JSON.parse(xhr.responseText);
						// 获取一周天气数据 
                        var data_lst = res.data.forecast
						// 拼装数据
                        
                        var content = `<table border=1 width=600 >`;
                        content += `<tr> <th>天气</th> <th>天气</th> </tr>`;
                        
                        for(var i of data_lst){
                            console.log(i);                          
                            content += `<tr> <td>${i.date}</td> <td>${i.type}</td> </tr>`;
                        }
                        content += `</table>`;
                        
                        // 获取info节点对象
                        var info = document.querySelector("#info");
                        // 把表格数据插入到info div当中;
                        info.innerHTML = content;
                    }
                }
            }


        }
    </script>
    
</body>
</html>

标签:arr,console,log,res,Javascript,var,string
From: https://www.cnblogs.com/wbcde116/p/18109274

相关文章

  • JavaScript高级 —— 学习(四)(完结)
    目录一、深浅拷贝(一)浅拷贝1.浅拷贝的简单使用拷贝对象:拷贝数组:使用两种浅拷贝方法 2.浅拷贝的问题(二)深拷贝1.通过递归实现深拷贝递归函数:递归实现过程:其他问题:2.利用lodash实现深拷贝3.利用JSON实现深拷贝二、异常处理(一)抛出异常throw(二)捕获异常tryca......
  • JavaScript事件流
    JavaScript的事件流主要包括三个阶段:捕获阶段、目标阶段和冒泡阶段。当一个事件发生时,如点击一个按钮,这个事件会从最外层的祖先元素(通常是window对象)开始向下传递,这是捕获阶段。当事件到达触发事件的目标元素时,进入目标阶段。然后,事件会从目标元素开始,向上冒泡到最外层的祖先元......
  • 身份证实名认证接口会返回什么?javascript身份核验接口示例
    身份证实名认证接口是通过核验身份证号、姓名、证件头像等一系列的要素信息进行用户身份验证,那么,身份证实名认证接口一般在核验完成后会返回什么参数信息呢?下面翔云API小编为大家答疑解惑!一般情况下,身份核验只会返回一致或者不一致的结果,不一致的情况下会返回那些参数不一致,以翔......
  • JavaScript基础篇3【数组】
    今日学习内容什么是数组简单理解就是用于临时存储同类数据,本质上是一种具有顺序的特殊对象【当然其实是可以存储不同的数据类型的,只是说那样做很少,所以一般就如前一样理解】数组的定义JavaScript中有两种定义数组的方式:实例化Array对象【称之为“完整形式”】vararr......
  • JavaScript高级 —— 学习(二)
    目录一、深入对象(一)创建对象三种方式1.利用对象字面量创建2.利用newObject()创建3.利用构造函数创建(二)利用构造函数创建对象1.构造函数介绍2.约定3.实例化执行过程(三)实例成员&静态成员1.实例成员说明:2.静态成员说明:(四)内置构造函数1.包装类型:String:lengt......
  • 【Web应用技术基础】JavaScript(1)——案例:猜数字
    因为不能插入视频,所以给大家一张一张截图的点击“重新开始一局游戏” <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • (day 24)JavaScript学习笔记(异常的处理)
    概述         这是我的学习笔记,记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript,那么这一系列的学习笔记可能会对你有所帮助。    今天学习异常的处理,主要是捕获异常、throw关键字主动抛异常、Error......
  • JavaScript笔记 09
    目录01DOM操作事件的体验02获取元素对象的五种方式03事件中this指向问题04循环绑定事件05DOM节点对象的常用操作  06点亮盒子的案例07节点访问关系08设置和获取节点内容的属性09以上内容的小总结 01DOM操作事件的体验        js本身是受......
  • 【JavaScript系列】-- 对象
    今天我们将探讨JavaScript中的一个强大工具—-对象。对象就像生活中的各种工具,帮助你更好地组织和管理信息。在实际开发中,可以使用对象来表示用户信息、处理表单数据等。01、什么是对象JavaScript对象是一种包含属性和方法的数据类型,可视为一个多功能盒子,用于存放各种数据。在......
  • Javascript Promise用法
    构造Promise现在我们构造一个promise对象:newPromise(function(resolve,reject)){ //要做的事情...}通过新建一个Promise对象好像并没有看出它怎样“更加优雅地书写复杂的异步任务”。我们之前遇到的异步任务都是一次异步,如果需要多次调用异步函数呢?例如,如果我想分三次......