day48_9_9 前端之javascript与jQuary
一。BOM与DOM
BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话。
DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素。
二。window对象。
1.window对象。
window是对浏览器窗口的操作。这些前缀(window)可以省略不写。
window.innerHeight-返回浏览器窗口的内部高度。
window.innerWidth-返回浏览器窗口的内部宽度。
window.open()--打开一个新的窗口。
window.close()--关闭当前窗口。:
其中open后面的参数分别是:open(‘网址‘,’‘,’宽=?,高=?,左定位=?右定位?‘)
2.navigator(浏览器对象)。
navigator.appName // Web浏览器全称
navigator.appVersion // Web浏览器厂商和版本的详细字符串
navigator.userAgent // 客户端绝大部分信息
navigator.platform // 浏览器运行所在的操作系统
这个对象显示的是浏览器的相关信息。其中userAgent比较重要,会输出用户的信息,在爬虫或登录验证的时候会使用到。
3.history对象(^)
前进和后退浏览器:
history.forward() // 前进一页
history.back() // 后退一页
4.screen对象(^)
显示可用屏幕的宽度和高度:
screen.availWidth - 可用的屏幕宽度
screen.availHeight - 可用的屏幕高度
5.location对象。
用于获取当前页的地址和跳转新的地址。
location.href 获取URL
location.href="URL" // 跳转到指定页面
location.reload() 重新加载页面
用法:
window.location.href后面需要输入完整的网页,这里会广泛使用。
三。弹出框
弹出框一共有三种:警告框,提示框,确认框。
1.警告框。
警告框就是当条件达成是,弹出该框让用户进一步确认是否继续操作。
语法是alert(’‘)
2.确认框。
当用户需要验证或接受某些信息时,可以使用该框进行接受操作信息。语法为:
confirm(’?‘)
注意的是该框会返回一个布尔值。
3.提示框。
提示框就是用户在输入某些信息是弹出的框。
其中会返回值,是用户输入的信息。
四。计时相关。
通过这个模块的语句,可以使得一些语句隔一段时间再运行。其语法有:
1.setTImeout()
setTimeout会返回一个值,为它的计时体,后面可以通过语句清除,清除之后该语句就不再运行了其语法是:
var t=setTimeout("JS语句",毫秒)
js语句可以是一个函数,函数执行后会在第二参数时间过去后执行第一参数的语句。
2.clearTimeout()
清除settomeout产生的t使之不运行。
语法:
clearTimeout(setTimeout_variable)
3.setInterval()
setInterval可以按照第二参数的时间间隔,每间隔结束后就运行一次第一参数的代码
setInterval("JS语句",时间间隔)
4.clearINterval()
清除setInterval产生的t,使之不运行:
clearInterval(setinterval返回的ID值)
例子:
<script>
function f() {
alert('????');
}
var t = setInterval(f,3000);
function f1() {
clearInterval(t)
}
setTimeout(f1,9000)
</script>
解释:先执行setINterval,每过3秒弹出一个框,当9秒过后,清除该id,不再弹出框。
五。DOM
dom是一套对文档的内容进行抽象和概念化的方法。也就是对html中文档的操作。
dom可以动态的创建html和获取html的信息。
1.获取标签:
document.getElementById 根据ID获取一个标签
document.getElementsByClassName 根据class属性获取
document.getElementsByTagName 根据标签名获取标签合集
浏览器应用:
其中id获取得出的直接是一个元素,因为id可以标记唯一值。
class和tag获取的都是一个列表。
2.其他方法:
parentElement 父节点标签元素
children 所有子标签
firstElementChild 第一个子标签元素
lastElementChild 最后一个子标签元素
nextElementSibling 下一个兄弟标签元素
previousElementSibling 上一个兄弟标签元素
浏览器演示:
3.创建标签元素:
语法:
createElement(标签名)
var divEle = document.createElement("div");
使用divEle作为容器,创建一个div标签。
4.添加标签节点。
将创建的标签作为另一个标签的子节点,追加如最后一个子节点。
语法:
somenode.appendChild(newnode);
亦可以将某个节点放到某一个节点的前面:
somenode.insertBefore(newnode,某个节点);
使用removechild(newnode)可以将某个节点中的某个元素移除调:
somenode.removeChild(要删除的节点)
使用somenode.replaceChild(newnode, 某个节点);可以替换调某节点为另一个节点:
5.获取标签内部元素:
innerText获取内部的文字元素
innerHtml获取内部的标签。
var divEle = document.getElementById("d1")
divEle.innerText
divEle.innerHTML
其中的区别在于,text只能操作文字,而html可以操作标签:
var divEle = document.getElementById("d1")
divEle.innerText="1"
divEle.innerHTML="<p>2</p>"
6.设置标签内部元素:
在新建了一个元素后,可以使用setAttribute修改其内部的属性和属性值:
var divEle = document.getElementById("d1");
divEle.setAttribute("age","18")
divEle.getAttribute("age")
divEle.removeAttribute("age") // 自带的属性还可以直接.属性名来获取和设置
imgEle.src
imgEle.src="..."
7,获取值操作。
语法:
elementNode.value
其中适用于以下标签:
.input
.select
.textarea
input中的值不能通过getattribute获取:
select获取的是它的value中的值。
8.对class的操作
这系列操作可以对对象的class中的值进行操作:
className 获取所有样式类名(字符串) classList.remove(cls) 删除指定类
classList.add(cls) 添加类
classList.contains(cls) 存在返回true,否则返回false
classList.toggle(cls) 存在就删除,否则添加
此操作可以对一个div进行样式的切换和修改。
9.对css的操作。
操作css需要对一个标签元素.style进行操作。
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
六。事件。
事件就是到达某个条件自动触发的动作。
事件可以通过两种方法进行绑定:
1.对指定的元素进行函数指定。
2.对一种类进行动态绑定。
<button onclick="foo()">按钮1</button>
<button id="d1">按钮2</button> <script>
function foo() {
alert(123)
} var b1Ele = document.getElementById("d1");
b1Ele.onclick = function () {
alert(456)
}
</script>
其中,script需要绑定在body的下面,否则,需要在所有绑定操作加上onload操作,等待窗口加载完毕:
<script>
window.onload = function () {
//内容
}
</script>
所有事件操作:
onclick 当用户点击某个对象时调用的事件句柄。
ondblclick 当用户双击某个对象时调用的事件句柄。 onfocus 元素获得焦点。 // 练习:输入框
onblur 元素失去焦点。 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange 域的内容被改变。 应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动) onkeydown 某个键盘按键被按下。 应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress 某个键盘按键被按下并松开。
onkeyup 某个键盘按键被松开。
onload 一张页面或一幅图像完成加载。
onmousedown 鼠标按钮被按下。
onmousemove 鼠标被移动。
onmouseout 鼠标从某元素移开。
onmouseover 鼠标移到某元素之上。 onselect 在文本框中的文本被选中时发生。
onsubmit 确认按钮被点击,使用的对象是form。
input点击例子:
<input id="int" value="内容" >
<script>
var idEle = document.getElementById('int')
idEle.onfocus = function () {
idEle.value = ''
}
idEle.onblur = function () {
idEle.value = '下次再来'
}
计时器例子:
<input id="int">
<input type="button" value="开始" id="ks">
<input type="button" value="结束" id="js">
<script>
function f() {
var curtime = new Date();
t1 = curtime.toLocaleString();
var idEle = document.getElementById('int');
idEle.value = t1
}
t = setInterval(f,1000);
var ksELe = document.getElementById('ks');
var jsELe = document.getElementById('js');
ksELe.onclick = function () {
if (!t){
t = setInterval(f,1000);
}
};
jsELe.onclick = function () {
clearInterval(t);
t = null
}
</script>
开关灯练习:
<style>
#d1{
width: 200px;
height: 200px;
border-radius: 50%;
}
.green{
background: green;
}
.red{
background: red;
}
</style>
</head>
<body>
<div id="d1" class="green red"></div>
<input type="button" value="bian" id="but">
<script>
var buEle = document.getElementById('but');
var d1Ele = document.getElementById('d1');
buEle.onclick = function () {
d1Ele.classList.toggle('red')
}
</script>
省市联动:
<select id="s1" >
<option value="" >---请选择---</option>
</select> <select id="s2">
<option value="">---请选择---</option>
</select> <script>
var data = {"河北省": ["廊坊", "邯郸"],
"北京": ["朝阳区", "海淀区"],
"山东": ["威海市", "烟台市"],
"上海": ["静安区","黄浦区"],
"深圳": ["南山区","龙岗区"]
};
s1Ele = document.getElementById('s1');
s2Ele = document.getElementById('s2');
for (i in data){
opEle = document.createElement('option');
opEle.innerText = i;
opEle.value = i;
s1Ele.appendChild(opEle)
}
s1Ele.onchange = function () {
key = s1Ele.value;
dlist = data[key];
s2Ele.innerHTML = '';
op2Ele = document.createElement('option');
op2Ele.innerText = '---请选择---';
s2Ele.appendChild(op2Ele);
for (let i=0;i <dlist.length;i++){
op1Ele = document.createElement('option');
op1Ele.innerText = dlist[i];
op1Ele.value = dlist[i];
s2Ele.appendChild(op1Ele)
}
}
</script>
省市联动
七。jQuery
1.jQuery简介:
jQuery就类似于python的模块,帮你封装了一对复杂的操作暴露给你一些简易的接口
前端的模块 叫 "类库"。
jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:“Write less, do more.“
jQuery的优势:
- 一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。
- 丰富的DOM选择器,jQuery的选择器用起来很方便,比如要找到某个DOM对象的相邻元素,JS可能要写好几行代码,而jQuery一行代码就搞定了,再比如要将一个表格的隔行变色,jQuery也是一行代码搞定。
- 链式表达式。jQuery的链式操作可以把多个操作写在一行代码里,更加简洁。
- 事件、样式、动画支持。jQuery还简化了js操作css的代码,并且代码的可读性也比js要强。
- Ajax操作支持。jQuery简化了AJAX操作,后端只需返回一个JSON格式的字符串就能完成与前端的通信。
- 跨浏览器兼容。jQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。
- 插件扩展开发。jQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前端页面上的组件都有对应插件,并且用jQuery插件做出来的效果很炫,并且可以根据自己需要去改写和封装插件,简单实用。
2.jQuery语法:
jQuery的基本语法结构
$(选择器).action(属性)
jQuery给你简化成了$jQuery() === $()
可以看出jQuery比较简洁。
3.jQuery选择器:
jQuery选择器和html选择器差不多:
id选择器:
$("#id")
标签选择器:
$("tagName")
class选择器:
$(".className")
一起使用:
$("div.c1") // 找到有c1 class类的div标签
所有选择器:
$("*")
组合选择器:
$("#id, .className, tagName")
层级选择器,与html选择器相似:
$("x y");// x的所有后代y(子子孙孙)
$("x > y");// x的所有儿子y(儿子)
$("x + y")// 找到所有紧挨在x后面的y
$("x ~ y")// x之后所有的兄弟y
jQuery生成的是jQuery对象。而原生js对象生成的是原生js对象,两种之间可以相互转化:
因为只要jQuery才能使用jQuery方法。
4.基本筛选器。
其基本方法如下:
:first // 第一个
:last // 最后一个
:eq(index)// 索引等于index的那个元素
:even // 匹配所有索引值为偶数的元素,从 0 开始计数
:odd // 匹配所有索引值为奇数的元素,从 0 开始计数
:gt(index)// 匹配所有大于给定索引值的元素
:lt(index)// 匹配所有小于给定索引值的元素
:not(元素选择器)// 移除所有满足not条件的标签
:has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)
例子:
$("div:has(h1)")// 找到所有后代中有h1标签的div标签
$("div:has(.c1)")// 找到所有后代中有c1样式类的div标签
$("li:not(.c1)")// 找到所有不包含c1样式类的li标签
$("li:not(:has(a))")// 找到所有后代中不含a标签的li标签
演示:
模态框的jQuery实现:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>自定义模态框</title>
<style>
.cover {
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-color: darkgrey;
z-index: 999;
}
.modal {
width: 600px;
height: 400px;
background-color: white;
position: fixed;
left: 50%;
top: 50%;
margin-left: -300px;
margin-top: -200px;
z-index: 1000;
}
.hide {
display: none;
}
</style>
</head>
<body>
<input type="button" value="弹" id="i0"> <div class="cover hide"></div>
<div class="modal hide">
<label for="i1">姓名</label>
<input id="i1" type="text">
<label for="i2">爱好</label>
<input id="i2" type="text">
<input type="button" id="i3" value="关闭">
</div>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
var tButton = $("#i0")[0];
tButton.onclick=function () {
var coverEle = $(".cover")[0];
var modalEle = $(".modal")[0]; $(coverEle).removeClass("hide");
$(modalEle).removeClass("hide");
}; var cButton = $("#i3")[0];
cButton.onclick=function () {
var coverEle = $(".cover")[0];
var modalEle = $(".modal")[0]; $(coverEle).addClass("hide");
$(modalEle).addClass("hide");
}
</script>
</body>
</html> jQuery版自定义模态框
模态框
5.属性筛选器
通过标签的属性或属性值进行标签的筛选:
[attribute]
[attribute=value]// 属性等于
[attribute!=value]// 属性不等于
例子:
// 示例
<input type="text">
<input type="password">
<input type="checkbox">
$("input[type='checkbox']");// 取到checkbox类型的input标签
$("input[type!='text']");// 取到类型不是text的input标签
演示:
day48_9_9 前端之javascript与jQuary的更多相关文章
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
- 互联网公司前端初级Javascript面试题
互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点)JavaScript是一种基于对象(Object)和事件驱 ...
- 第三篇:web之前端之JavaScript基础
前端之JavaScript基础 前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript ...
- 好程序员web前端分享javascript关联数组用法总结
好程序员web前端分享javascript关联数组用法总结,有需要的朋友可以参考下. Hash关联数组定义 代码如下 // 定义空数组 myhash = { } // 直接定义数组 myhash = ...
- 前端之JavaScript(二)
一.概述 本篇主要介绍JavaScript的BOM和DOM操作,在前端之JavaScript(一)中介绍了JavaScript基础知识 1.1.BOM和DOM BOM(Browser Object M ...
- Python web前端 05 JavaScript
Python web前端 05 JavaScript 一.获取元素 1.初识JavaScript /* .. */ #这是多行注释 // #这是单行注释 #JavaScript是一种脚本语言,是一种动 ...
- 我的前端规范——JavaScript篇
相关文章 简书原文:https://www.jianshu.com/p/5918c283cdc3 我的前端规范——开篇:http://www.cnblogs.com/shcrk/p/9271561.h ...
- web前端分享JavaScript到底是什么?特点有哪些?
web前端分享JavaScript到底是什么?特点有哪些?这也是成为web前端工程师必学的内容.今天为大家分享了这篇关于JavaScript的文章,我们一起来看看. 一.JavaScript是什么? ...
- 1+x 证书 Web 前端开发 JavaScript 专项练习
官方QQ群 1+x 证书 Web 前端开发 JavaScript 专项练习 http://blog.zh66.club/index.php/archives/198/
随机推荐
- go语言设计模式之observer
observer.go package observer import ( "fmt" ) type Observer interface { Notify(string) } t ...
- 我的朋友&值得学习的大佬
@media only screen and (max-width: 360px) { #friedsGroup { columns: 1 !important; } } #MySignature{ ...
- C++ 虚函数的说明
虚函数的几点说明: 1. 当一个成员函数定义为虚函数时,其派生类中的同名函数也自动为虚函数.无论其是否添加了 virtual 关键字. 为了能良好的阅读代码,请加上. 2. 父类的虚函数,就是为了让子 ...
- awk命令使用整理
1. awk默认以空格分隔, 可摘出指定位置的内容, 通常用法如下( 文件名称为file.txt ): 文件中行内容为: 12:3 a 4:56 b awk '{print $1}' ...
- Educational Codeforces Round 76 (Rated for Div. 2) E. The Contest dp
E. The Contest A team of three programmers is going to play a contest. The contest consists of
- 基于Django的Rest Framework框架的解析器
本文目录 一 解析器的作用 二 全局使用解析器 三 局部使用解析器 四 源码分析 回到目录 一 解析器的作用 根据请求头 content-type 选择对应的解析器对请求体内容进行处理. 有appli ...
- Ubuntu更新python3.5到python3.7
一 下载wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz 二 解压tar zxvf Python-3.7.1rc2.tg ...
- 【zibbix自定义监控】zabbix服务自定义监控mysql的状态信息
由于mysql我安装在zabbix_server服务的主机上,所以下面操作在zabbix服务主机上进行,注意服务主机已经安装了监控服务 实现步骤: 1.修改 zabbix_agentd.conf,添加 ...
- MySQL属性SQL_MODE学习笔记
最近在学习<MySQL技术内幕:SQL编程>并做了笔记,本博客是一篇笔记类型博客,分享出来,方便自己以后复习,也可以帮助其他人 SQL_MODE:MySQL特有的一个属性,用途很广,可以通 ...
- Java日期时间API系列2-----Jdk7及以前的日期时间类在mysql数据库中的应用
1.java中与数据库相关的时间类 java提供与mysql方便交互的三种数据类型: java.sql.Date java.sql.Time java.sql.Timestamp 它们都是继承java ...