HTML基础(4)

HTML基础(4)

运算符

# 1.算术运算符
+ 加法;- 减法; * 乘法; / 除法; % 取余;
# 自增 ++
var x=10;
var res1=x++;  '先赋值后自增1'
var res2=++x;  '先自增1后赋值'

# 2.比较运算符
  弱等于:自动转换类型
  '5' == 5  '结果是true js会自动转换成相同数据类型比较值是否一样'
  强等于:不转换类型
  '5' === 5  '结果是false'

# 3.逻辑运算符
逻辑运算符用来确定变量或值之间的逻辑关系
x=6 and y=3,
&&	和	(x < 10 && y > 1) 为 true
||	或	(x == 5 || y == 5) 为 false
!	非	!(x == y) 为 true

流程控制

选择结构

# 1.if语句;
    语法:
        if(条件){
            条件为true时,执行的代码段
        }

 # 2.if...else语句;
    语法:
       if(条件){
          条件为true时,执行的代码段
      }else{
          条件为false时,执行的代码段
      }
 # 3. if ...else if..else语句;
    语法:
      if(条件1){
          当条件1为true时,执行的代码段
      }else if(条件2){
          当条件2为true时,执行的代码段
      }else{
          当条件都不满足时,执行的代码段
      }

 # 4.if语句嵌套;
    语法:
      if条件1(){
          if(){
          }else{
        }
      }else{
      }
    # 5.switch语句;  
'    // 优点:只判断一次,效率更高;更严谨,判断相等时使用的是全等在判断'
    语法:
       switch(要判断的变量){
          case 值1:
            变量跟值1相等时执行的代码段
          break;# 如果不加break会基于当前位置一直往下运行
          case 值2:
            变量跟值2相等时执行的代码段
          break;
      .....
      default: # 没有对应条件统一执行default子代码
        当所有值跟变量不相等时执行的代码
      }    
        

循环结构

# 1.while  先判断条件是否成立在执行
    语法:
      while(条件){
        当条件为true时,重复执行的代码段;
        改变变量
      }

# 2.do..while   不管条件是否成立,都会执行一次
    语法:
      do{
        代码段
        改变变量
      }while(条件)
  3.for 
    语法:
      for(初始值;条件;初始值的变化){
        当条件为true时,执行的代码段
      }
    执行流程:初始值;判断条件;输出;初始值的变化

    
 # 循环打印0到9的数字
    for (var i=0;i<10;i++) {
      console.log(i);
    }
"""
使用for循环打印出数组内所有的元素
	var l1 = [11, 22, 33, 44, 55]
	for(var i=0;i<l1.length;i++){
    console.log(l1[i])
	}
"""

三元运算符

# 语法结构:
条件 ? 操作1 : 操作2。 如果条件为真,执行操作1,否则执行操作2

python中的三元运算
	res = 11 if 1 > 2 else 22
  '''if后面的条件成立则使用if前面的值 不成立则使用else后面的值'''
js中的三元运算
	res = 1 > 2 ? 11 : 22
 	'''问号前面的条件成立则使用冒号左边的值 否则使用冒号右边的值'''
# 三元运算一般情况下都不推荐嵌套使用!

函数

# 函数定义:
  function 函数名(参数1,参数2){
    函数体代码
    return 返回值
  }
  1.function 定义函数的关键字 相当于python中的def
  2.函数名的命名参考变量名 并且js推荐使用驼峰体(Myfunc\MyFunc)
  3.参数可写可不写
  4.return返回值
函数调用:
	函数名加括号 有参则传参即可!!!
       
 # 函数返回值
当 JavaScript 到达 return 语句,函数将停止执行。

如果函数被某条语句调用,JavaScript 将在调用语句之后“返回”执行代码。

函数通常会计算出返回值。这个返回值会返回给调用者

'return不支持返回多个数据'

函数的参数

# 无参函数
	function f1(){console.log(111)}
  f1()
# 有参函数
	function f2(a, b){console.log(a,b)}
  f2()  # 可以调用 相当于传了两个undefined
  f2(1)  # 可以调用 
  f2(1,2)  # 可以调用
  f2(1,2,3,4,5)  # 可以调用
  '''js中的函数提供了有个内置关键字arguments:接收所有参数'''
  function f1(){
    console.log(arguments)
    if (arguments.length === 0){
      console.log('什么参数都没传')
    }else if(arguments.length === 1){
      console.log('传了一个参数')
    }else{
      console.log('传了多个参数')
    }
  }
  

函数的返回值

 # 函数返回值
当 JavaScript 到达 return 语句,函数将停止执行。

如果函数被某条语句调用,JavaScript 将在调用语句之后“返回”执行代码。

函数通常会计算出返回值。这个返回值会返回给调用者

'return不支持返回多个数据'

# 计算两个数的乘积,并返回结果

var x = myFunction(7, 8);        // 调用函数,返回值被赋值给 x

function myFunction(a, b) {
    return a * b;                // 函数返回 a 和 b 的乘积
}
# 56

箭头函数

# 5.箭头函数(drf中vue框架会再次接触)
	var f = v => v;
  // 等同于(箭头左边是形参右边是返回值)
  var f = function(v){
    return v;
  }

  var f = () => 5;
  // 等同于
  var f = function(){return 5};

  var sum = (num1, num2) => num1 + num2;
  // 等同于
  var sum = function(num1, num2){
    return num1 + num2;  //这里的return只能返回一个值,如果想返回多个值需要自己手动给他们包一个数组或对象中
  }

自定义对象

# 基本概念
根据JS的对象扩展机制,用户可以自定义JS对象,这与Java语言有类似的地方。
与自定义对象相对应的是JS标准对象,例如Date、Array、Math等等

# 对象初始化器方式
格式:objectName = {property1:value1, property2:value2,…, propertyN:valueN}

var d1 = {'name':'jason','age':18}
python字典取值操作js中的自定义对象都有 并且自定义对象还可以直接通过句点符取值 更像一个对象
取值操作
	d1.name  # jason
循环取值
	for(var i in d1){
    console.log(d1[i])
  }
 
定义自定义对象还有一种标准格式(自定义对象 内置对象 第三方对象)
var d2 = new Object()  # 相当于生成了空字典

# 构造函数方式
格式如下:function User(name,age){
          this.name=name;
          this.age=age;
          this.canFly=false;
    }
    var use=new User();

内置对象

Date 对象

# Date 对象
Date 对象用于处理日期与时间。
创建 Date 对象: new Date()

var f = Date()
f.toLocaleString()
'Thu Apr 28 2022 16:54:14 GMT+0800 (中国标准时间)'
f.toLocaleDateString()
'2022/4/28'
f.toLocaleTimeString()
'16:59:39'


# 小练习:
const WEEKMAP = {  
  0:"星期天",
  1:"星期一",
  2:"星期二",
  3:"星期三",
  4:"星期四",
  5:"星期五",
  6:"星期六"
};  //定义一个数字与星期的对应关系对象

function showTime() {
    var d1 = new Date();
    var year = d1.getFullYear();
    var month = d1.getMonth() + 1;  //注意月份是从0~11
    var day = d1.getDate();
    var hour = d1.getHours();
    var minute = d1.getMinutes() < 10?"0"+d1.getMinutes():d1.getMinutes();  //三元运算

    var week = WEEKMAP[d1.getDay()];  //星期是从0~6

    var strTime = `
    ${year}-${month}-${day} ${hour}:${minute} ${week}
    `;
    console.log(strTime)
};

showTime();
2022-4-28 17:02 星期四
Date对象方法 描述
getDate() 获取日
getDay () 获取星期
getMonth () 获取月(0-11)
getFullYear () 获取完整年份
getHours () 获取小时
getMinutes () 获取分钟
getSeconds () 获取秒
getMilliseconds () 获取毫秒
getTime () 返回累计毫秒数(从1970/1/1午夜)

JSON对象

JSON 是用于存储和传输数据的格式
JSON 通常用于服务端向网页传递数据 

# js中如何序列化反序列化
 JSON.stringify()
 JSON.parse()
# 代码示例:
var f = 222
JSON.stringify(f)
'222'
JSON.parse(f)
222

正则对象

# 1. 定义正则两种方式
    1. var reObj1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}$");
    2. var reObj2 = /^[a-zA-Z][a-zA-Z0-9]{5,11}$/

# 2. 常用方法
    reObj1.test("将要被校验的字符串")
# 3. 正则的匹配模式
    1. g --> 全局
    "Alexdashabi".replace(/a/g, "呵呵")
    2. i --> 不区分大小写
    "Alexdashabi".replace(/a/i, "呵呵")

// RegExp对象 ---> Python re模块
// 生成RegExp对象

'''
注意点:
1.正则表达式中间一定不可以有空格
2.test()不传值相当于传了一个undefined进去,然后test()就把这个undefined当成是“undefined”来判断
3.JS正则的两种模式1. g表示全局  2. i忽略大小写'''

正则对象的全局匹配

'''当正则表达式使用了全局模式(g)的时候,并且你还让它去检测一个字符串,此时会引出来一个
lastIndex, lastIndex会记住上一次匹配成功的位置,并把下一次要开始校验的位置记住'''
# 代码示例:
var r = /alex/g;

console.log(r.test("alex")); // true
console.log(r.lastIndex);  // 打印出4, lastIndex(0-3)

console.log(r.test("alex")); // false ,因为是从lastIndex=4开始校验的
console.log(r.lastIndex);    // 打印出0, lastIndex(0-3)

console.log(r.test("alex")); //true 同理
console.log(r.lastIndex);

console.log(r.test("alex")); // false

BOM操作

浏览器对象模型(Browser Object Model (BOM))
它使 JavaScript 有能力与浏览器进行“对话”

所有浏览器都支持 window 对象。它代表浏览器的窗口

所有全局 JavaScript 对象,函数和变量自动成为 window 对象的成员
全局变量是 window 对象的属性
全局函数是 window 对象的方法

BOM-窗口操作

# window.open(); 
window.open('https://www.baidu.com','','width=400,height=400')

# window.innerHeight; 
获取浏览器的高度
# window.innerWidth; 
获取浏览器的宽度
# window.close() 
关闭当前窗口

BOM-history对象

# window.history 
对象包含浏览器历史
# history.back() 
等同于在浏览器点击后退按钮
# history.forward() 
等同于在浏览器中点击前进按钮

BOM-Navigator对象

# window.navigator 
对象包含有关访问者的信息

#navigator.platform  
mac ,Windows

#navigator.cookieEnabled
属性返回 true,如果 cookie 已启用,否则返回 false:

#navigator.product  
属性返回有关浏览器的版本信息:

#navigator.userAgent  
属性返回由浏览器发送到服务器的用户代理报头(user-agent header):

#navigator.language 
属性返回浏览器语言:

BOM- location对象

# window.location 
对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面
# window.location.reload()  
刷新页面
# 常用属性和方法:
console.log(location.href); //获取URL
// console.log(location.href="URL"); // 跳转到指定页面
// console.log(location.reload()); //重新加载页面

BOM-弹出框

JavaScript 有三种类型的弹出框:警告框、确认框和提示框。

# 警告框
// 当警告框出现后,用户需要点击确定按钮才能继续进行操作。
// 语法:
// alert("你看到了吗?");

# 确认框(了解即可)
// 当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。
// 如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。
// 语法:
// confirm("你年满18岁了吗?");

# 提示框(了解即可)
// 提示框经常用于提示用户在进入页面前输入某个值。
// 当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。
// 如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。
//语法:
// prompt("请在下方输入","你的答案");

BOM-计时器

# 计时的概念
通过使用 JavaScript,我们可以在一定时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件

# setTimeout() 语法
'''单次定时'''
var s=setTimeout("alert(123)",5000) //第一个参数是你要执行的语句是什么,第二个参数是你要等多少秒之后执行(毫秒)

clearTimeout(t)  # 取消定时器

# setInterval()
 '''循环定时'''
console.log(setInterval(foo,1000));//这是每隔1秒钟执行一次函数,
// setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
clearInterval() # 取消定时器

'''由于DOM是操作页面上的HTML代码 但是HTML页面加载顺序是从上往下
所以如果想要我们的代码能够正常执行 必须要先等待html页面加载完毕 

解决的措施之一:
  	将script标签写在body内最下方'''

DOM操作



通常,通过 JavaScript,您需要操作 HTML 元素。

为了达成此目的,您需要首先找到这些元素。有好几种完成此任务的方法:

通过 id 查找 HTML 元素
通过标签名查找 HTML 元素
通过类名查找 HTML 元素
通过 CSS 选择器查找 HTML 元素
通过 HTML 对象集合查找 HTML 元素


'''直接查找'''
# 通过标签名查找标签
document.getElementsByTagName('div')  # 数组套标签对象
# 通过class值查找标签
document.getElementsByClassName('c1')  # 数组套标签对象
# 通过id值查找标签
document.getElementById('d1')  # 标签对象本身

'''间接查找'''
parentElement            父节点标签元素
children                 所有子标签
firstElementChild        第一个子标签元素
lastElementChild         最后一个子标签元素
nextElementSibling       下一个兄弟标签元素
previousElementSibling   上一个兄弟标签元素
# 方法得出的标签对象还可以继续点击上述方法

posted @ 2022-04-28 18:33  洛阳城门听风雨  阅读(89)  评论(0)    收藏  举报