python day45

python day45

BOM与DOM操作

BOM

BOM:Browser Object Model,浏览器对象模型。BOM的结构图:
在这里插入图片描述从上图可以看出来:

DOM对象也是BOM的一部分

window对象是BOM的顶层(核心)对象

注意!

1、在调用window对象的方法和属性时,可以省略window,例如:window.document.location可以简写为document.location

2、全局变量也是windows对象的属性,全局的函数时window对象的方法

对象history、navigator、screen(了解)

1、history对象包不包含浏览器的历史

history.back() //后退一页,等同于history.go(-1)
history.forward() //前进一页,等同于history.go(1)
history.go(0) //0是刷新

2、navigator对象包含了浏览器相关信息。

navigator.appName  // Web浏览器全称
navigator.userAgent  // 客户端绝大部分信息
navigator.platform   // 浏览器运行所在的操作系统

3、可以用screen对象得到可用的屏幕宽读和高度

screen.availWidth  //可用的屏幕宽度
screen.availHeight  //可用的屏幕高度
localtion对象
location.href  //获取URL
location.href="URL" // 跳转到指定页面
location.reload() //重新加载页面
弹出系统对话框
alert(1)是window.alert(1)的简写,因为它是window的子方法。

系统对话框有三种:

    alert(""); //不同浏览器中的外观是不一样的
    confirm("");  //兼容不好
    prompt("");   //不推荐使用
打开关闭窗口

open(“url地址”,“新窗口的位置_blank或者_self”,“新窗口的特征”)

window.open("http://www.w3school.com.cn","_blank", "width=400, height=400")

2、close()关闭当前窗口

var x=window.open("http://www.w3school.com.cn","_blank", "width=400, height=400")

x.close()
浏览器窗口内部的高度和宽度
window.innerHeight - 浏览器窗口的内部高度
window.innerWidth - 浏览器窗口的内部宽度 
定时器

1、setTimeOut():只在指定时间后执行一次,通常用于延迟执行某方法或功能,

//定时器 异步运行  
function say(){  
    alert("hello");  
}  
//使用方法名字执行方法  
var t1 = setTimeout(hello,1000);  
var t2 = setTimeout("hello()",3000); //使用字符串执行方法  
clearTimeout(t2); //去掉定时器

2、setInterval():在指定时间为周期循环执行,通常用于刷新表单,对于一些表单的假实时指定时间刷新同步,动画效果等。

//实时刷新时间单位为毫秒  
var t3 = setInterval(say,3000);   
var t4 = setInterval('say()',3000);   

clearInterval(t3);
clearInterval(t4);

DOM

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model),DOM标准规定HTML文档中的每个成员都是一个节点(node),HTML DOM树如下图
在这里插入图片描述

查找节点

1、直接查找

document.getElementById                 #根据ID获取唯一一个标签
document.getElementsByClassName   #根据class属性获取一系列标签
document.getElementsByTagName     #根据标签名获取一系列标签

2、间接查找如下表

语法含义
childNodes获取所有的子节点,除了元素还有文本等
children获取所有元素子节点,不包含文本
parentNode获取父节点
previousSibling获取上一个兄弟节点,包含文本
previousElementSibling获取上一个兄弟元素节点,不包含文本
nextSibling获取下一个兄弟节点,包含文本
nextElementSibling获取下一个兄弟元素节点,不包含文本
firstChild获取第一个子节点,包含文本
firstElementChild获取第一个子节点,不包含文本
lastChild获取最后一个子节点,包含文本
lastElementChild获取父元素最后一个元素节点。不包含文本
增加节点

1、创建新节点

var divEle = document.createElement('div');

2、追加一个子节点(放到最后)

somenode.appendChild(新的子节点);

3、插入一个子节点(插入到某个节点前)

somenode.insertBefore(新的子节点,某个节点); 
删除、替换节点
somenode.removeChild(要删除的子节点);
somenode.replaceChild(新的子节点, 某个子节点); 
修改/设置节点属性

1、获取文本节点的值:

var divEle = document.getElementById("d1")
divEle.innerText
divEle.innerHTML

2、设置文本节点的值:

var divEle = document.getElementById("d1")
divEle.innerText="1"
divEle.innerHTML="<p>2</p>"

3、attribute操作

var divEle = document.getElementById("d1");
divEle.setAttribute("age","18")
divEle.getAttribute("age")
divEle.removeAttribute("age")

4、自带的属性还可以直接.属性名来获取和设置

imgEle.src
imgEle.src="..."
获取元素的值

适用于input、select、textarea标签

var x=document.getElementById('input')
var y=document.getElementById('select')
var z=document.getElementById('textarea')

x.value
y.value
z.value
class操作
var x=document.getElementById('div1')

x.classList.remove('col1')
x.classList.add('col1')
x.classList.contains('col1')
x.classList.toggle('col1')
css操作
obj.style.backgroundColor="red"

JS操作CSS属性的规律:

1.对于没有中横线的CSS属性一般直接使用style.属性名即可。如:

obj.style.margin
obj.style.width
obj.style.left
obj.style.position

2.对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可。如:

obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily
事件

HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时执行一段JavaScript。下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作。

1、常用事件
onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。

onfocus        元素获得焦点。               // 练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)

onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。

onselect      在文本框中的文本被选中时发生。
onsubmit      确认按钮被点击,使用的对象是form。
绑定方式

方式一:

<div id="div1" onclick="changeColor(this);">点我</div>
<script>
  function changeColor(ths) {
    ths.style.backgroundColor="green";
  }
</script>

注意:
this是实参,表示触发事件的当前元素。
函数定义过程中的ths为形参。

方式二:

<div id="div1">点我</div>
<script>
    var oDiv = document.getElementById('div1');
    oDiv.onclick = function() {
        this.style.backgroundColor = 'red';
    }
</script>

jQuery

jQuery是一个轻量级的、兼容多浏览器的JavaScript库。

jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:“Write less, do more.“

jQuery的优势

1、 一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。

2、 丰富的DOM选择器,jQuery的选择器用起来很方便,比如要找到某个DOM对象的相邻元素,JS可能要写好几行代码,而jQuery一行代码就搞定了,再比如要将一个表格的隔行变色,jQuery也是一行代码搞定。

3、 链式表达式。jQuery的链式操作可以把多个操作写在一行代码里,更加简洁。

4、 事件、样式、动画支持。jQuery还简化了js操作css的代码,并且代码的可读性也比js要强。

5、 Ajax操作支持。jQuery简化了AJAX操作,后端只需返回一个JSON格式的字符串就能完成与前端的通信。

6、 跨浏览器兼容。jQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。

7、 插件扩展开发。jQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前端页面上的组件都有对应插件,并且用jQuery插件做出来的效果很炫,并且可以根据自己需要去改写和封装插件,简单实用。

jQuery对象

jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是 jQuery独有的。如果一个对象是 jQuery对象,那么它就可以使用jQuery里的方法:例如$(“#i1”).html()。

$("#i1").html()的意思是:获取id值为 i1的元素的html代码。其中 html()是jQuery里的方法。

相当于:document.getElementById("i1").innerHTML;

虽然 jQuery对象是包装 DOM对象后产生的,但是 jQuery对象无法使用 DOM对象的任何方法,同理 DOM对象也没不能使用 jQuery里的方法。

一个约定,我们在声明一个jQuery对象变量的时候在变量名前面加上$:

var $variable = jQuery对像
var variable = DOM对象
$variable[0]//jQuery对象转成DOM对象

拿上面那个例子举例,jQuery对象和DOM对象的使用:

$("#i1").html();//jQuery对象可以使用jQuery的方法
$("#i1")[0].innerHTML;// DOM对象使用DOM的方法

jQuery基础语法

$(selector).action()
查找标签
基本选择器
id选择器:
$("#id")
标签选择器:
$("tagName")
class选择器:
$(".className")
配合使用:
$("div.c1")  // 找到有c1 class类的div标签
所有元素选择器:

不推荐使用

$("*")
组合选择器:
$("#id, .className, tagName")
层级选择器:
x和y可以为任意选择器

$("x y");// x的所有后代y(子子孙孙)
$("x > y");// x的所有儿子y(儿子)
$("x + y")// 找到所有紧挨在x后面的y
$("x ~ y")// x之后所有的兄弟y
基本筛选器:
:first // 第一个
:last // 最后一个
:eq(index)// 索引等于index的那个元素
:even // 匹配所有索引值为偶数的元素,从 0 开始计数
:odd // 匹配所有索引值为奇数的元素,从 0 开始计数
:gt(index)// 匹配所有大于给定索引值的元素
:lt(index)// 匹配所有小于给定索引值的元素
:not(元素选择器)// 移除所有满足not条件的标签
:has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)
属性选择器:
[attribute]
[attribute=value]// 属性等于
[attribute!=value]// 属性不等于
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值