首页 > 其他分享 >前端开发(05)

前端开发(05)

时间:2022-12-06 22:23:38浏览次数:40  
标签:05 对象 标签 代码 js let document 前端开发

一.Jacascript组成

JavaScript的实现包括以下3个部分:

ECMAScript(核心) 描述了JS的语法和基本对象
文档对象模型(DOM) 处理网页内容的方法和接口
浏览器对象类型(BOM) 与浏览器交互的方法和接口

BOM操作

一.什么是BOM
BOM(Browser Object Model)是指浏览器对象模型
BOM提供了独立于内容 而与浏览器窗口进行交互的对象,它使 JavaScript 有能力与浏览器进行“对话”

window.open()

window.open('https://wwww.baidu.com/','','width=800px,left=200px')
window.close()            //关闭当前浏览器窗口
navigator.userAgent    	  //标识自己是一个浏览器
history.forward()		//前进一页
history.back()			//后退一页
location对象

window.location 对象用于获得当前页面的地址(URL), 并把浏览器重定向新的页面

常用方法和属性:

window.location.herf='URL'
	//获取当前页面所在的网址 也可以再加赋值符号和网址跳转
window.location.reload()
	//刷新当前页面

alert()             //警告框
confirm()			//确认框
prompt()			//提示框
计时器相关操作(重要)
<script>
    function showMsg() {
          alert('快来爬取美女图片')
    }
    let t = setTimeout(showMsg, 3000)  // 3000毫秒之后执行函数 存储一个定时任务
    clearTimeout(t)  //取消任务
</script>

	let s = setInterval(showMsg, 3000)   // 每隔3000毫秒执行一次
    clearInterval(s)

DOM操作

DOM (Document Object Model)是指文档对象模型,通过它可以访问HTML文档的所有元素

既然DOM操作是通过js代码来操作标签 所以我们需要先学习如何查找标签之后才能给标签绑定一些JS代码(DOM操作)
查找标签
"""
1.js中变量名的命名风格推荐是驼峰体
2.js代码查找到的标签如果需要反复使用可以用变量接收 规律xxxELe
"""

document.getElementById('d1')
	结果就是标签本身
document.getElementsByClassName('c1')
	结果是数组里面含有多个标签对象 //[p,c1]
document.getElementsByTagName('span')
	结果是数组里面含有多个标签对象

注意:

涉及到DOM操作的JS代码应该放在文档的哪个位置。

间接查找
			  标签对象的方法
parentElement   			父节点标签元素
children					所有子标签
firstElementChild			第一个子标签元素
lastElementChild			最后一个子标签元素
nextElementSibing			下一个兄弟标签元素
previousElementSibling		 上一个兄弟标签元素
操作节点
// js代码创建一个标签
let aEle = document.createElement('a')

// js代码操作标签属性
aEle.herf =  'http://www.baidu.com/'  只能添加默认的属性


let imgEle = document.createElement('img')
imgEle.setAttribute('username','jason')
<img username="jason">
imgEle.setAttribute('src','a.png')
<img username="jason" src="a.png">


setAttribute()兼容默认属性和自定义属性
getAttribute("age")
removeAttribute("age")


.innerText   			获取标签内部所有的文本内容
.innerText = '文本'       替换/设置标签内部的文本(不识别标签语法)

.innerHTML				获取标签内部所有的标签包含文本
.innerHTML = '文本'	    替换/设置标签内部的文本(识别标签语法)
获取值操作
1.针对用户输入的和用户选择的标签
	  标签对象.value
2.针对用户上传的文件数据
      标签对象.files       fileList [文件对象、文件对象、文件对象]
	标签对象.files[0]	 文件对象

class与css操作

1. js操作标签css样式
	 标签对象.style.属性名(下划线没有 变成驼峰体)
2. js操作标签class属性
	标签对象.classList.add()       //添加属性
	标签对象.classList.contains()  //判断是否拥有
	标签对象.classList.remove()    //删除某个
	标签对象.classList.toggle()  //拥有属性则删除 没有则添加  

事件

事件可以简单的理解为通过js代码给html标签绑定一些自定义的功能

常见事件
	onclick		 当用户点击某个对象调用的事件句柄
    onfocus		  元素获得焦点
    onblur		  元素失去焦点
    onchange	  域的内容被改变
    ......
    

绑定事件的多种方式
 绑定事件的多种方式
	<!--绑定事件的方式1-->
    <button onclick="showMsg()">快按我</button>
// 只有点击button按钮才会触发onclick相对应的功能函数
	<script>
          function showMsg() {
                let msg = confirm('你确定要这样吗')
                console.log(msg)
          }
    </script>

	<!--绑定事件的方式2-->
     <input type="button" value="快快快" id="d1">
    <script>
          function showMsg() {
                let msg = prompt('你确定要这样吗')
                console.log(msg)
          }

          let inputEle = document.getElementById('d1');
          inputEle.onclick = function () {
                alert('谁在那里点我!!!')
          }
    </script>      
事件函数关键字中的this关键字

this指代的就是当前被操作的标签对象本身

结合绑定事件的第二种方式:

添加一个username属性值 如何拿到
<input type="button" value="快快快" id="d1" username="jason">
  
 let currentEle = this
    
console.log(this.getAttribute('username'))

如果事件函数内有多层嵌套那么最好在一开始用变量存储一下防止后续变化
window.onload
当我们给页面上的元素绑定事件的时候,必须等到文档加载完毕。因为我们无法给一个不存在的元素绑定事件

window onl oad事件在文件加载过程结束的时候触发。此时,文档中的所有对象都位于DOM中,并且所有的图像,脚本,连接和子框架都已完成加载。

注意: .onload()函数存在覆盖现象
    XXX.onload 等待XXX加载完毕之后再执行后面的代码
事件实战案例
<input type="text" value="" id="d1" placeholder="用户名">
    
<script>
    let inputEle = document.getElementById('d1')
    inputEle.onfocus = function () {
          this.value = ''
    }
    inputEle.onblur = function () {
          this.value = '下次再来哟'
    }
</script>
<p>username:
        <input type="text" id="d1">
        <span style="color: red"></span>
    </p>
    <p>password:
        <input type="text" id="d2">
        <span style="color: red"></span>
    </p>
    <button id="suBtn">提交</button>

    <script>
        // 1.查找提交按钮的标签
        subEle = document.getElementById('suBtn')
        // 2.给按钮标签绑定点击事件
        subEle.onclick = function (){
            // 3.查找获取用户输入的标签并获取数据
            let userNameEle = document.getElementById('d1')
            let passWordEle = document.getElementById('d2')
            if(userNameEle.value === 'jason'){
                userNameEle.nextElementSibling.innerText = '用户名不能是Jason'
            }
            if(passWordEle.value === '123'){
                passWordEle.nextElementSibling.innerText = '密码不能是123'
            }
        }
    </script>
    
    
省:
<select name="" id="d1">

</select>

市:
<select name="" id="d2">

</select>
<script>
    let data = {
        "河北": ["廊坊市", "邯郸市"],
        "北京": ["朝阳区", "海淀区"],
        "山东": ["威海市", "烟台市"],
        "安徽": ["芜湖市", "合肥市"],
        "上海": ["浦东新区", "静安区"]
    }
    // 提前查找好省和市的select标签
    let proSeEle = document.getElementById('d1');
    let citySeEle = document.getElementById('d2');
    // 1.获取所有的省信息
    for (let pro in data) {
        // 2.创建option标签
        let proOpEle = document.createElement('option');
        // 3.添加文本及属性
        proOpEle.innerText = pro;
        proOpEle.setAttribute('value', pro);
        // 4.将创建好的option标签添加到省下拉框中
        proSeEle.appendChild(proOpEle)
    }
    // 5.给省标签绑定文本域变化事件 onchange
    proSeEle.onchange = function () {
        citySeEle.innerHTML = '';  // 每次操作市之前清空市数据
        // 6.获取用户选择的省信息 根据省获取市信息
        let targetProData = this.value;
        let cityDataList = data[targetProData];
        // 7.循环获取每一个市信息 创建option标签 添加到市下拉框中
        for (let i = 0; i < cityDataList.length; i++) {
            let cityOpEle = document.createElement('option');
            cityOpEle.innerText = cityDataList[i];
            cityOpEle.setAttribute('value', cityDataList[i]);
            citySeEle.appendChild(cityOpEle)
        }
    }
</script>

jQuery类库

"""
IE浏览器:前端针对IE有时候需要单独再编写一份代码
"""
Write less, do more  写的更少做的更多

1.加载速度快
2.选择器更多更好用
3.一行代码走天下
4.支持ajax请求(重点)
5.兼容多浏览器

准备工作
	1.下载核心文件到本地引入(没有网络也可以使用)
		<srcipt src="jQuery3.6.js"></script>
	2.CDN网络资源加载(必须有网络才可以使用)
		https://www.bootcdn.cn/

https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js

https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js

什么是CDN
	内容分发网络
    
jQuery导入之后需要使用关键字才可以使用
	默认的关键字就是jQuery但是不好输入 >>>:	$
    
jQuery封装了JS代码 让编写更简单 但是有时候JS代码更快
js代码与jQuery代码对比
js代码与jQuery代码对比
    let pEle = document.getElementsByTagName('p')[0]
    undefined
    pEle.style.color = 'red'
    'red'
    pEle.nextElementSibling.style.color = 'green'

    $('p').first().css('color','yellow').next().css('color','blue')

标签对象与jQuery对象

1.不同的对象能够调用的方法是不同的
	在编写代码的时候一定要看清楚手上是什么对象
2.两者可以互相转换
	标签对象转jQuery对象		
    	$(标签对象)
 	jQuery对象转标签对象
    	jQuery对象[0]

标签:05,对象,标签,代码,js,let,document,前端开发
From: https://www.cnblogs.com/wei0919/p/16960931.html

相关文章

  • 前端开发:5、BOM操作、DOM操作、jQuery类库
    JavaScript目录JavaScript一、BOM操作1、window对象2、navigator对象3、screen对象4、history对象5、location对象6、弹出窗7、计时相关二、DOM操作1、查找标签2、操作......
  • Web前端开发:BOM与DOM
    目录浏览器模型BOM:Broswerobjectmode一、BOM操作1.window对象(1)window简介(2)window对象的方法2.navigator对象3.screen对象4.history对象5.location对象6.弹出框二、BOM......
  • web前端开发: jQuery类库
    jQuery类库一、jQuery简介1.特点加载速度更快一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。选择器更多更好用丰富的DOM选择器,jQuery的......
  • hdu4705 Y--树形dp
    原题链接:​​http://acm.hdu.edu.cn/showproblem.php?pid=4705​​题意:一棵树,求三个点不在一条线的个数。分析:注意,反过来求,求出三个点在一条线的个数,最后总数减去在一条线的......
  • 前端开发 5 BOM操作与DOM操作
    今日内容详细目录今日内容详细BOM操作window的子对象navigator对象screeen对象history对象location对象弹出框警告框确认框提示框计时相关DOM操作查找标签操作节点获取值......
  • URAL - 1057 Amount of Degrees--数位dp
    原题链接:​​http://vjudge.net/problem/URAL-1057​​题意:[x,y]里一共有多少个数可以由k个b整数幂组成。#define_CRT_SECURE_NO_DEPRECATE#include<iostream>#include......
  • 1805.number-of-different-integers-in-a-string 字符串中不同整数的数目
    问题描述1805.字符串中不同整数的数目解题思路把数字当作字符串处理,存入unordered_set(哈希表)中,注意最后一个字符是数字的情况。代码classSolution{public:i......
  • 1805. 字符串中不同整数的数目
    1805.字符串中不同整数的数目classSolution{publicintnumDifferentIntegers(Stringword){char[]chars=word.toCharArray();intn=cha......
  • 「查找表」字符串中不同整数的数目(力扣第1805题)
    本题为12月6日力扣每日一题题目来源:力扣第1805题题目tag:查找表双指针题面题目描述给你一个字符串word,该字符串由数字和小写英文字母组成。请你用空格替换每个不......
  • 05.Nodejs_web开发模式
    Web开发目录目录Web开发Web开发模式服务端渲染的传统Web开发模式前后端分离的Web开发模式Session认证机制在项目中使用Session向session中存入数据:从session中获取数......