Python全栈开发学习--javascript--(HTML DOM、浏览器BOM)--Day11

18 篇文章 0 订阅
16 篇文章 0 订阅

目录

HTML DOM
浏览器 BOM

一、HTML DOM

DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范,DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面中其他的标准组件,DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中导航寻找特定信息。

在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。每个节点都拥有包含着关于节点某些信息的属性。这些属性是nodeName(节点名称)nodeValue(节点值)nodeType(节点类型)

根据W3C的 HTML DOM 标准,HTML 文档中的所有内容都是节点:

(1)整个文档是一个文档节点
(2)每个 HTML 元素是元素节点
(3)HTML 元素内的文本是文本节点
(4)每个 HTML 属性是属性节点
(5)注释是注释节点

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 模型被构造为对象的树:
在这里插入图片描述

1.1 查找HTML元素
1.1.1 通过 id 找到 HTML 元素
//通过元素设置的id名,找到该元素
var x=document.getElementById("myidname");

<p class="myidname">我是一个P标签</p>
//获取id为main下的所有P元素
document.getElementById("main").getElementsByTagName("p");
1.1.2 通过类名 class 找到 HTML 元素
var x=document.getElementsByClassName("myclassname");

<p class="myclassname">我是一个P标签</p>
1.1.3 通过标签名查找 HTML 元素
//获取p标签
var y=document.getElementsByTagName("p");

//获取id为myidname的div中的p标签
var x=document.getElementById("myidname");
var y=x.getElementsByTagName("p");

<div class="myidname">
	<p class="myclassname1">我是一个P标签</p>
	<p class="myclassname2">我是一个P标签</p>
	<p class="myclassname3">我是一个P标签</p>
</div>
1.1.4 获取元素内容

(1)获取元素内容的最简单方法是使用 innerHTML 属性

//获取id为myidname的内容
var txt=document.getElementById("myidname").innerHTML;

(2)除了 innerHTML 属性,也可以使用 childNodesnodeValue 属性来获取元素的内容。
在这里插入图片描述
在这里插入图片描述

1.2 DOM 动作
1.2.1 改变HTML文档

(1)document.write():直接向 HTML 输出流写内容

document.write("写入html文档的内容");

(2) innerHTML :更改原HTML文档的内容

document.getElementById("myidname").innerHTML="新更改的内容!";

(3)attribute:改变文档元素的属性值

//更改图片
document.getElementById("myimage").src="landscape.jpg";
<img id="image" src="smiley.gif">

//更改超链接
document.getElementById("myidname").href="www.newxxx.com";
<a href="www.xxx.com"></a>
1.2.2 改变CSS样式

语法

document.getElementById(id).style.property=新样式
<p id="p2">Hello World!</p>

document.getElementById("p2").style.color="blue";
document.getElementById("p2").style.fontFamily="Arial";
document.getElementById("p2").style.fontSize="larger";
1.3 DOM 事件
1.3.1 常见事件

(1)onclick:当用户点击鼠标时触发

1)方法1:

//this代表当前的h1元素
//(1)点击后直接更改元素
<h1 onclick="this.innerHTML='点击后显示的内容'">点击前显示的内容</h1>

//(2)点击后触发js函数进行更改
function changetext(param){
    param.innerHTML="点击后显示的内容";
}
<h1 onclick="changetext(this)">点击前显示的内容</h1>

2)方法2:

//不通过this传递当前元素
<script>
	function display(){
		document.getElementById("demo").innerHTML="点击后向p标签显示的内容";
	}
</script>

<button onclick="display()">点击这个按钮能调用函数</button>
<p id="demo"></p>

方法3:

//绑定button与函数的关系
<script>
	document.getElementById("myBtn").onclick=function(){displayDate()};

	function display(){
		document.getElementById("demo").innerHTML="点击后向p标签显示的内容";
	}
</script>

<button id="myBtn">点击这个按钮能调用函数</button>
<p id="demo"></p>

(2)
onload 事件会在用户加载页面后触发
onunload 事件会在用户离开页面时被触发。

//页面加载后会执行functionname()这个js函数
<body onload="functionname()">
</body>

(3)onchange :当元素内容被改变的时候删除

function myFunction(){
    var x=document.getElementById("fname");
    x.value=x.value.toUpperCase();
}

输入: <input type="text" id="fname" onchange="myFunction()">
<p>当你离开输入框后,函数将被触发,将小写字母转为大写字母。</p>

(4)onmouseoveronmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数。
(5)onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。

1)首先当点击鼠标按钮时,会触发 onmousedown 事件,鼠标按着不松开
2)当释放鼠标按钮时,会触发 onmouseup 事件,  鼠标松开
3)最后,当完成鼠标点击时,会触发 onclick 事件。
1.3.2 事件表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3.3 addEventListener():事件监听

使用 addEventListener() 方法, JavaScript 从 HTML 标记中分离开来,可读性更强, 在没有控制HTML标记时也可以添加事件监听。

使用该方法,可以给页面元素添加一个监听事件,当监听的动作被触发时,执行绑定的函数。

语法

element.addEventListener(event, function, useCapture);

(1)第一个参数是事件的类型 (如 “click” 或 “mousedown”).

(2)第二个参数是事件触发后调用的函数。

(3)第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。

//给id为 myBtn 的页面元素添加监听事件,当该元素绑定的动作执行的时候就触发函数
<script>
	document.getElementById("myBtn").addEventListener("click", displayDate);
	
	function displayDate() {
    	document.getElementById("demo").innerHTML = Date();
}
</script>

<button id="myBtn">点击</button>
<p id="demo"></p>

注意:不要使用 “on” 前缀。 例如,使用 “click” ,而不是使用 “onclick”

//设置监听的时候绑定两个或者多个函数
element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);

事件冒泡和捕获
ddEventListener() 方法可以指定 “useCapture” 参数来设置传递类型:

addEventListener(event, function, useCapture);

默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。

(1)事件冒泡:,内部元素的事件会先被触发,然后再触发外部元素,即: p 元素的点击事件先触发,然后会触发 div 元素的点击事件。

document.getElementById("myDiv").addEventListener("click", myFunction, false);

(2)事件捕获:外部元素的事件会先被触发,然后才会触发内部元素的事件,即: div元素的点击事件先触发 ,然后再触发 p 元素的点击事件。

document.getElementById("myDiv").addEventListener("click", myFunction, true);

什么意思呢,就是说当p标签位于div内,当我们p标签的监听动作被触发,使用冒泡就先执行p绑定的动作,再执行div绑定的动作。而使用捕获方式的话,就是先执行div再执行p

1.3.4removeEventListener() 方法

removeEventListener() 方法移除由 addEventListener() 方法添加的事件

element.removeEventListener("mousemove", myFunction);
1.4 DOM 元素

在这里插入图片描述

1.4.1 创造

(1)document.createElement("元素类型"):创建元素节点
(2)appendChild():元素添加
(3) document.createTextNode():创建文本节点

实例:

//使用该方法需要获取一个已经存在的元素
//创建p元素
var para = document.createElement("p");

//创建文本
var node = document.createTextNode("这是一个新的段落。");

//将文本添加到p元素中去
para.appendChild(node);

//获取存在的元素div1
var element = document.getElementById("div1");

将p元素添加到div中去
element.appendChild(para);

1.4.2 移除

要移除一个元素removeChild(),你需要知道该元素的父元素

//查找 id="div1" 的元素:
var parent = document.getElementById("div1");

//查找 id="p1" 的 <p> 元素
var child = document.getElementById("p1");

//从父元素中移除子节点:
parent.removeChild(child);
1.4.3 替换

replaceChild()方法进行替换

var para = document.createElement("p");
var node = document.createTextNode("这是一个新的段落。");
para.appendChild(node);
 
var parent = document.getElementById("div1");
var child = document.getElementById("p1");

//新创建的p元素替换p1元素
parent.replaceChild(para, child);
1.5 DOM 集合

当我们通过js获取页面元素的时候,可能会一次性获取到多个页面元素,例如:

var x = document.getElementsByTagName("p");

上面的实例将会获取到文档中所有的p元素,p元素可能有多个,那么我们入伙获取某一个呢?

//访问到第一个p元素
y = x[0];

//访问到第二个p元素
y = x[1];

//元素的数量
x.length

实例:

//遍历所有p元素,替换其颜色
var myCollection = document.getElementsByTagName("p");
var i;
for (i = 0; i < myCollection.length; i++) {
    myCollection[i].style.backgroundColor = "red";
}

二、浏览器 BOM

BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构

2.1 Window对象

所有浏览器都支持 window 对象。它表示浏览器窗口。所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。

(1)window.innerHeight :浏览器窗口的内部高度(包括滚动条)
(2)window.innerWidth : 浏览器窗口的内部宽度(包括滚动条)
在这里插入图片描述
window.open(url) - 打开新窗口
window.close() - 关闭当前窗口
window.moveTo() - 移动当前窗口
window.resizeTo() - 调整当前窗口的尺寸

2.2 window.screen

window.screen 对象包含有关用户屏幕的信息。window.screen对象在编写时可以不使用 window 这个前缀。

(1)screen.availWidth:可用的屏幕宽度
(2)screen.availHeight:可用的屏幕高度
(3)screen.colorDepth:色彩深度
(4)screen.pixelDepth:分辨率

2.3 window.location

window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面,window.location 对象在编写时可不使用 window 这个前缀

(1)location.hostname :返回 web 主机的域名
(2)location.pathname: 返回当前页面的路径和文件名
(3)location.port :返回 web 主机的端口 (80 或 443)
(4)location.protocol :返回所使用的 web 协议(http: 或 https:)
(5)location.href:返回当前页面的 URL
(6)location.assign("url") :方法加载新的文档(打开一个新的页面)
(7)location.replace("url"):替换指定的URL,不同于assgin,无法返回
(8)location.reload():刷新

window.location.assign(url) : 加载 URL 指定的新的 HTML 文档。 就相当于一个链接,跳转到指定的url,当前页面会转为新页面内容,可以点击后退返回上一个页面。

window.location.replace(url) : 通过加载 URL 指定的文档来替换当前文档 ,这个方法是替换当前窗口页面,前后两个页面共用一个窗口,所以是没有后退返回上一页的

2.4 window.history

对象包含浏览器的历史,window.history对象在编写时可不使用 window 这个前缀。
(1)history.go():前进或者后退指定的页面数,正为前进,负为后退
(2)history.back() :后退一页
(3)history.forward() :前进一页

2.5 window.navigator

对象包含有关访问者浏览器的信息。

// 返回用户代理头的字符串
navigator.userAgent

// "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"

// 返回是否可以支持cookie
navigator.cookieEnabled

// 返回浏览器名称
navigator.appName // Chrome,IE

// 返回浏览器内核
navigator.appCodeName // Mozilla
2.6 window弹框

(1)警告框 window.alert("sometext")

function myFunction(){
    alert("你好,我是一个警告框!");
}

(2)确认框 window.confirm("sometext")

确认框通常用于验证是否接受用户操作。
1)当确认卡弹出时,用户可以点击 "确认" 或者 "取消" 来确定用户操作。
2)当你点击 "确认", 确认框返回 true, 如果点击 "取消", 确认框返回 false
function myFunction(){
    var x;
    var r=confirm("按下按钮!");
    if (r==true){
        x="你按下了\"确定\"按钮!";
    }
    else{
        x="你按下了\"取消\"按钮!";
    }

(3)window.prompt("sometext","defaultvalue")

提示框经常用于提示用户在进入页面前输入某个值。
1)当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。
2)如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。
<script>
function myFunction(){
	var x;
	var person=prompt("请输入你的名字","Harry Potter");
	if (person!=null && person!=""){
	    x="你好 " + person + "! 今天感觉如何?";
	    document.getElementById("demo").innerHTML=x;
	}
}

弹窗使用 反斜杠 + “n”(\n) 来设置换行。

2.7 计时事件

通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。

(1)setInterval():间隔指定的毫秒数不停地执行指定的代码

语法

window.setInterval("javascript function",milliseconds);
(函数,间隔时间);
//1000毫秒等于1秒,每隔3秒弹出hello
setInterval(function(){alert("Hello")},3000);

时钟实例:

var myVar=setInterval(function(){myTimer()},1000);
 
function myTimer()
{
    var d=new Date();
    var t=d.toLocaleTimeString();
    document.getElementById("demo").innerHTML=t;
}

(2)clearInterval() 方法用于停止 setInterval() 方法执行的函数代码。
要使用 clearInterval() 方法, 在创建计时方法时必须使用全局变量

实例:

<script>
var myVar=setInterval(function(){myTimer()},1000);
function myTimer(){
    var d=new Date();
    var t=d.toLocaleTimeString();
    document.getElementById("demo").innerHTML=t;
}
function myStopFunction(){
    clearInterval(myVar);
}
</script>

(3)setTimeout() : 在指定的毫秒数后执行指定代码。

语法

myVar= window.setTimeout("javascript function", milliseconds);

setTimeout() 方法会返回某个值。在上面的语句中,值被储存在名为 myVar 的变量中

//等待3秒,然后弹出 "Hello"
setTimeout(function(){alert("Hello")},3000);

(4)clearTimeout() 方法用于停止执行setTimeout()方法的函数代码。

//点击第一个按钮等待3秒后出现"Hello"弹框。
//点击第二个按钮来阻止第一个函数运行。(你必须在3秒之前点击它)

var myVar;
 
function myFunction()
{
    myVar=setTimeout(function(){alert("Hello")},3000);
}
 
function myStopFunction()
{
    clearTimeout(myVar);
}

setInterval() 和setTimeout() 的区别:

setInterval()循环执行,每隔几秒执行一次
setTimeout() 执行一次,延迟几秒只执行一次
2.8 cookie

Cookie 用于存储 web 页面的用户信息,Cookie 是一些数据, 存储于你电脑上的文本文件中,简单点来说就是:浏览器缓存

Cookie 以名/值对形式存储,以;分隔如下所示:

username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT";
2.8.1 创建cookit
document.cookie="username=John Doe";

//添加过期时间(以 UTC 或 GMT 时间)。默认情况下,cookie 在浏览器关闭时删除
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT";

//再添加cookit路径,默认情况下,cookie 属于当前页面
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";
2.8.2 读取cookit
var x = document.cookie;
document.cookie 将以字符串的方式返回所有的 cookie,类型格式: cookie1=value; cookie2=value; cookie3=value;
2.8.3 修改cookit
//旧的 cookie 将被覆盖
document.cookie="username=John Smith; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";
2.8.4 删除cookit

删除 cookie 非常简单。您只需要设置 expires 参数为以前的时间即可,如下所示,设置为 Thu, 01 Jan 1970 00:00:00 GMT:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

实例

以下实例中,我们将创建 cookie 来存储访问者名称。

首先,访问者访问 web 页面, 他将被要求填写自己的名字。该名字会存储在 cookie 中。

访问者下一次访问页面时,他会看到一个欢迎的消息。

<script>
//设置cookit
function setCookie(cname,cvalue,exdays){
	var d = new Date();
	d.setTime(d.getTime()+(exdays*24*60*60*1000));
	var expires = "expires="+d.toGMTString();
	document.cookie = cname+"="+cvalue+"; "+expires;
}

//获取cookit
function getCookie(cname){
	var name = cname + "=";
	var ca = document.cookie.split(';');
	for(var i=0; i<ca.length; i++) {
		var c = ca[i].trim();
		if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
	}
	return "";
}

//检测cookit
function checkCookie(){
	var user=getCookie("username");
	if (user!=""){
		alert("欢迎 " + user + " 再次访问");
	}
	else {
		user = prompt("请输入你的名字:","");
  		if (user!="" && user!=null){
    		setCookie("username",user,30);
    	}
	}
}
</script>

<body onload="checkCookie()"></body>

特别鸣谢菜鸟教程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: lnh-课件代码python3期是指由某个机构或教育平台提供的关于Python开发的第三期课程。在该课程中,学员将学习和掌握Python编程语言及其相关的开发技术。 首先,在课程开始时,学员将学习Python编程的基础知识,包括语法、数据类型、变量、控制流等等。学员将通过理论讲解和实践编程练习,逐步掌握Python的基本概念和编程技巧。 接着,课程将引导学员学习Python的Web开发框架,如Django等。学员将学会使用这些框架搭建和开发功能强大的Web应用程序,并了解前后端的交互原理。通过项目实践,学员将学会如何设计数据库、处理用户输入、处理表单和实现用户认证等等。 除了Web开发,课程还会涉及其他Python相关的技术,如爬虫、数据处理、数据可视化、机器学习等等。学员将学习如何使用Python进行数据抓取和处理,并将学到的知识应用于实际项目中。 在课程的最后阶段,学员将有机会进行一个完整的项目实践,将之前学到的知识应用到一个真实的项目中。这个项目将涵盖从需求分析、系统设计、开发、测试到部署等过程,帮助学员加深对Python开发的理解和实践能力。 总而言之,lnh-课件代码python3期是一门旨在帮助学员面掌握Python开发技术的课程。通过系统的学习和实践,学员将能够独立完成一个完整的Python项目,并具备进一步深入学习和实践的基础。 ### 回答2: lnh-课件代码是Python3期课程的代码库。在这个代码库中,我们可以找到与课程相关的所有代码示例和案例。 这个代码库是为了帮助学员更好地学习和理解课程内容而创建的。在Python3期课程中,我们将学习如何利用Python语言来构建应用程序,涵盖了从前端开发到后端开发的所有关键知识点。 在lnh-课件代码中,我们可以找到各种不同的文件和文件夹。这些文件和文件夹包括课程中所涵盖的各个主题和模块,例如HTML、CSS、JavaScript、Flask、Django等。每个文件和文件夹都包含了与该主题相关的代码示例和案例。 通过查看lnh-课件代码,学员可以更好地理解课程中所讲述的理论知识,并且能够将其应用于实际的项目中。这样,学员可以更好地掌握Python开发的技能,提升自己在职业生涯中的竞争力。 总而言之,lnh-课件代码是Python3期课程的代码库,包含了与课程内容相关的所有代码示例和案例。通过使用这个代码库,学员可以更好地学习和理解课程内容,并应用于实际项目中。 ### 回答3: lnh-课件代码python3期是一门针对Python开发的课程。这门课程旨在教授学员使用Python语言进行开发,涵盖从前端到后端的所有内容。 在这门课程中,学员将学习使用Python编写前端代码,包括HTML、CSS和JavaScript,掌握前端开发的基本概念和技术。 同时,学员还将学习使用Python开发后端代码,包括使用框架如Django或Flask进行Web应用程序的开发,以及数据库的设计和管理。 此外,该课程还将重点介绍如何进行系统部署、性能优化以及安防护等方面的知识,以帮助学员面打造一个完整的Python应用程序。 该课程将提供大量的实践项目,让学员能够通过实际操作来巩固自己所学的知识。此外,还会有针对性的练习和作业,以确保学员能够灵活应用所学的知识。 授课老师将是经验丰富的专业人士,在教学过程中将提供详细的实例和案例,帮助学员更好地理解和应用所学的内容。 总之,lnh-课件代码python3期是一门集中教授Python开发技术的课程,通过系统地学习,学员能够掌握使用Python开发应用程序的能力,并在实践中不断提升自己的技术水平。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值