人工智能方向近期很热
自动化运维方向
JS DOM 节点操作、事件
JQuery 是在JS的基础上实现了一种封装、对象。
JS DOM---:
完成两个步骤:1、查找标签
document.getElementById(“idname”) //dom对象
document.getElementsByTagName(“tagname”) //dom对象的集合
document.getElementsByName(“name”)
document.getElementsByClassName(“name”)
2导航查找
---通过某一个标签定位到另一个标签的属性
parentElement //父节点标签元素
children // 所有子标签
firstElementChild // 第一个子标签元素
lastElementChild // 最后一个子标签元素
nextElementtSibling // 下一个兄弟标签元素
previousElementSibling // 上一个兄弟标签元素
2、操作标签
1文本操作 取值操作
DOM对象.innerText
DOM对象.innerHTML
赋值操作
this.innerHTML="hello world"
this.innerText="hello world"
实例:
<p id="d1" class="c1">PPP</p>
<p class="c1">PPP</p>
<script>
var ele_p=document.getElementById("d1"); //dom对象,on事件=function
var eles_p=document.getElementsByClassName("c1");
ele_p.onclick=function () {
alert(1234)
}
for (var i=0;i<eles_p.length;i++){
eles_p[i].onclick=function () {
alert(1234)
this 当前点击的标签
this.innerHTML="hello world";
this.innerText="hello";
}
}
2属性操作
DHTML的简洁语法:
console.log(DOM对象.属性);
DOM对象.属性=值
原生JS:
console.log(DOM对象.getAttribute("属性名"))
DOM对象.setAttribute("属性名","值")
示例:
<input type="text" id="inp" value="123">
<script>
var ele_inp=document.getElementById("inp");
ele_inp.onclick=function () {
this.value="hello";
console.log(this.value);
//JS方法 console.log(this.setAttribute("value","666"))
this.setAttribute("value","666");
}
3class属性操作
DOM对象.classList.add("hide");
DOM对象.classList.remove("c1");
左侧菜单实例
<style>
.hide{display:none}
this.classList.add("hide");
this.classList.remove("c1")
<input type="text" id="inp" value="123">
<script>
var ele_inp=document.getElementById("inp");
ele_inp.onclick=function () {
// this.value="hello";
// console.log(this.value);
//JS方法 console.log(this.setAttribute("value","666"))
// this.setAttribute("value","666");
this.classList.add("hide");
}
4CSS样式设置
DOM对象.style.样式属性名=样式值
this.style.color="red"; 样式操作
this.style.border="red 1px solid";
<input type="text" id="inp" value="123">
<script>
var ele_inp=document.getElementById("inp");
ele_inp.onclick=function () {
// this.value="hello";
// console.log(this.value);
//JS方法 console.log(this.setAttribute("value","666"))
// this.setAttribute("value","666");
// this.classList.add("hide");
this.style.color="red";
this.style.border="blue 1px solid";
}
5
获取value值
<select name="" id="s1">
<option value="1">河北省</option>
<option value="2">河南省</option>
<option value="3">山东省</option>
</select>
<script>
var eles_s=document.getElementById("s1");
for (var i=0;i<eles_s.length;i++){
eles_s[i].onclick=function () {
console.log(eles_s.value)
}
}
value属性:input,select,textarea,
<textarea id="c1">
节点操作 1 创建节点 2 添加节点 3 删除节点 4 替换节点 节点就是一个个DOM对象
创建节点 document.createElement("a")
新增 父节点.appendChild()
删除 父节点.removeChild()
替换 父节点.replaceChild(新节点,被替换节点)
事件
用户行为不同:点击、悬浮
onclick 单击事件
ondblclick 双击事件
<div class="c1">DIV</div>
<script>
var ele=document.getElementsByClassName("c1")[0];
ele.onclick=function () {
alert(123)
}
ele.ondblclick=function () {
alert(123)
}
onload 事件
<script>
window 窗口对象
window.onload=function () {
var ele=document.getElementsByClassName("c1")[0];
alert(ele)
}
示例:
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
window.onload=function () {
var ele=document.getElementsByClassName("c1")[0];
alert(ele)
} ;
</script>
</head>
<body>
<div class="c1">DIV</div>
</body>
只有窗口对象执行完毕后,才会执行onload触发的内容。
onsubmit 事件 阻止默认事件发生:return false.
先alert(123)或验证内容,后提交事件。
示例:
<form action="" id="form">
<p>用户名:<input type="text" name="user"></p>
<input type="submit">
<!--//默认提交事件 {"user":"yuan"}传给action了-->
<!--<input type="button" value="提交">-->
</form>
<script>
var ele_form=document.getElementById("form");
ele_form.onsubmit=function (e) {
//input标签内容拿到手
var inp=document.getElementsByName("user")[0];
var username=inp.value;
alert(username);
if (username.length>12 || username.length<5){
//阻止默认事件
// return false
// 阻止默认事件
e.preventDefault();
}
alert(123);
};
事件传播
<style>
.outer{
width:300px;
height:300px;
border:1px solid red;
}
.inner{
width:100px;
height:100px;
backgroudcolor:blue;
}
<div class="outer">
<div class="inner">
</div>
</div>
<script>
var outer=document.getElementsByClassName("outer")[0];
var inner=document.getElementsByClassName("inner")[0];
outer.onclick=function(e){
alert(1234)
}
inner.onclick=function (e) { //e=event事件对象
alert(888)
//阻止事件传播
e.stopPropagation()
}
单击inner部分先出888,后出1234。这种情况就是事件传播。
阻止事件传播:e.stopPropagation()
onkeydown事件 按键就触发
<input type="text" id="inp">
<script>
var ele=document.getElementById("inp");
ele.onkeydown=function (e) { // e 事件对象: 存的是与触发事件相关的具体信息
console.log(e.keyCode);
if(e.keyCode==13){
alert(123)
}
}
//e 时间对象:存的是与触发事件相关的具体信息。
QQ截图移动逻辑:鼠标在动,onmousedown事件,onmousemove事件
阻止默认事件方法二:e.preventDefalut().
onselect事件
var ele=document.getElementsByClassName("inp");
ele.onselect=function () {
alert(123)
}
选中文本才会触发
<input type="text" id="inp" value="123">
<script>
var ele=document.getElementById("inp");
ele.onselect=function () {
alert(123)
};
onmouseover事件 鼠标悬浮
<style>
.c1{
width:200px;
height:200px;
backgroud-color:red;
}
<div class="c1">DIV
<script>
var ele=document.getElementsByClassName("c1")[0];
//鼠标悬浮触发事件
ele.onmouseover=function () {
alert(1111)
console.log(111)
}
//鼠标离开区域触发事件
onmouseleave事件
ele.onmouseleave=function () {
alert(777)
console.log(777)
}
示例:模态动画框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.hide{display: none;}
.back{
height:2000px;
}
.shade{
position:fixed;
top:0;
bottom:0;
left:0;
right:0;
backgroud-color:green;
opacity:0.4;
}
.model{
position:fixed;
top:100px;
left:50%;
margin-left:-200px;
width:400px;
height:250px;
backgroud-color:white;
}
</style>
</head>
<body>
<div class="back">
<button class="add">添加学员</button>
<table border="1">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>班级</th>
<th class="operate">
<button class="edit">编辑</button>
<button class="del">删除</button>
</th>
</tr>
</thead>
<tbody id="tbody">
<tr>
<td>liwj</td>
<td>18</td>
<td>python18</td>
<td>
<button class="edit">编辑</button>
<button class="del">删除</button>
</td>
</tr>
<tr class="t1">
<td>liwj2</td>
<td>19</td>
<td>python19</td>
<td class="yangben">
<button class="edit">编辑</button>
<button class="del">删除</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="shade hide"></div>
<div class="model hide">
<form action="">
<p>姓名<input type="text" class="item"></p>
<p>年龄<input type="text" class="item"></p>
<p>班级<input type="text" class="item"></p>
<p>
<input type="button" value="提交" class="submit">
<input type="button" value="修改" class="mod">
<input type="button" value="取消" class="cancel">
</p>
</form>
</div>
<script>
//删除事件
var eles_del=document.getElementsByClassName("del");
var ele_tbody=document.getElementById("tbody");
for (var i=0;i<eles_del.length;i++){
eles_del[i].onclick=function () {
ele_tbody.removeChild(this.parentElement.parentElement);
}
};
// model对话框
var ele_add=document.getElementsByClassName("add")[0];
var ele_cancel=document.getElementsByClassName("cancel")[0];
var ele_shade=document.getElementsByClassName("shade")[0];
var ele_model=document.getElementsByClassName("model")[0];
ele_add.onclick=function () {
ele_shade.classList.remove("hide");
ele_model.classList.remove("hide")
};
ele_shade.onclick=function () {
ele_shade.classList.add("hide");
ele_model.classList.add("hide")
};
//添加事件
var ele_submit=document.getElementsByClassName("submit")[0];
ele_submit.onclick=function () {
var eles_input=ele_model.getElementsByClassName("item");
//创建节点
var ele_tr=document.createElement("tr");
for (var i=0;i<eles_input.length;i++){
var ele_td=document.createElement("td");
ele_td.innerHTML=eles_input[i].value;
ele_tr.appendChild(ele_td);
}
var ele_th_oprate=document.getElementsByClassName("operate")[0].cloneNode(true);
ele_tr.appendChild(ele_th_oprate);
ele_tbody.appendChild(ele_tr);
ele_shade.classList.add("hide");
ele_model.classList.add("hide")
}
//编辑替换事件
var eles_edit=document.getElementsByClassName("edit");
for (i=0;i<eles_edit.length;i++){
eles_edit[i].onclick=function () {
ele_shade.classList.remove("hide");
ele_model.classList.remove("hide");
var ele_tr_old=this.parentElement.parentElement;
var ele_mod=document.getElementsByClassName("mod")[0];
ele_mod.onclick=function () {
//替换节点
var eles_input=ele_model.getElementsByClassName("item");
var ele_tr=document.createElement("tr");
for (var i=0;i<eles_input.length;i++){
var ele_td=document.createElement("td");
ele_td.innerHTML=eles_input[i].value;
ele_tr.appendChild(ele_td);
}
var ele_th_oprate=document.getElementsByClassName("operate")[0].cloneNode(true);
ele_tr.appendChild(ele_th_oprate);
ele_tbody.replaceChild(ele_tr,ele_tr_old);
ele_shade.classList.add("hide");
ele_model.classList.add("hide");
}
}
}
</script>
</body>
</html>
JQuery
JS网页动态操作,控制标签控制节点,实现动态效果。
只是封装了一些很繁琐的东西
write less,do more.
兼容性
选择器和操作
1 查找标签
选择器 实现
2 标签操作
yuan.js
function add(x,y){
return x+y;
}
引入js文件
head标签内<script src="yuan.js"></script>
<script>add(2,3)
jquery-3-1-1.js
<script src="jquery-3-1-1.js"></script>
<p id="d1">PPP
<script>
$("#d1")=
jquery("#d1") $相当于jquery
jquery拿到的一定是个集合
$("#d1").html()拿到文本内容
jquery选择器
引入js文件<script src="jquery-3-1-1.js">
<p class="c1">P1
<p class="c1">P2
<p class="c1" id="d1">P3
<script>
//基本选择器
*所有
#id
.class
$("#d1").css("color","red") 操作P3
$(".c1").css("color",'red') 操作P1,P2,P3
$("p").css() P1,P2,P3
<div>DIV
$("#d1,div").css() 组合查找 P3,DIV
<div class="outer">
<div class="c2">
<div class="c3">DIV3
<p id="d2" class="c3">PPP
//组合选择器
$(".outer .c3") 后代选择器 DIV3,PPP
$(".outer>.c3") 子代
$(".outer+.c3") 毗邻
//基本筛选器
$(".c1:first") 取到第一个c1标签
$(".c1:last")
$(".c1:eq(1)") 取到第二个c1标签
eq范围
even奇数
gt(1)大于
随心所欲选择
属性选择器
<div egon="dog">egon
<div egon="dog" ale="dog2">egon
$("[egon]").css()
$("[egon="dog"]").css()
$("[egon][alex]").css() 一个筛选不出来就再加一个
表单选择器 只适用于表单标签
<input type="text">
$("[type="text"]").value("hello")
=$(":text").value("hello")
筛选器
过滤筛选器
$(".c1").eq(1).css()
var i=3 eq(i)用于使用变量方式筛选
$(".c1").first().css()
$("#d1").hasclass(c1) 有没有class值为c1的 返回true #用于if语句
查找筛选器
$("div").children(".text")
<div>
<p class="c1">P1
<p class="c1" id="d1">P2
<p class="c1">P3
<p class="c1">P4
<p class="c1" id="p6">P5
</div>
<p class="c1">P7
//向下查找
$("#d1").nextAll().css() 拿到d1标签后面的所有兄弟标签
$("#d1").next().css() 下一个兄弟标签元素
$("#d1").nextUntil("#p6").css() 开区间 从d1到p6范围
//向上查找
$("#p6").prev().css()
$("#p6").prevAll().css()
$("#p6").prevUntil().css()
//查找所有的兄弟标签
$("#d1").siblings().css()
//find children 查找所有的孩子标签
$(".outer").children().length() 孩子的个数,子代非后代
console.log($(".outer").children().length())
$(".outer").children(".c3") .c3的子代
children找儿子,子代
find找后代,只能针对条件性地取
$(".outer").find(".c3")
//找父标签
$("#d3").parent().css() 第一层父标签
$("#d3").parent().parent().css() 第二层父标签
$("#d3").parents().css() 所有父标签,一般使用不到
$("#d3").parentUntil(".outer").css() 开区间
标签操作
<script src="jquery-3-1-1.js">
文本操作
<p id="p1">PPP
<p class="c1">PPP1
<p class="c1">PPP2
<p class="c1">PPP3
<p class="c1">PPP4<a href="">click
事件绑定
<script>
//DOM对象转换为Jquery对象 $(DOM对象)
$("p").click(function () {
alert(123)
console.log($(this));
//取值操作
alert($(this).html()); 内容
alert($(this).text()); 文本
//赋值操作
$(this).html("hello world")
$(this).text("hello world")
$(this).text("<a>hello world</a>")
$(this).html("<a href="">hello world</a>") 有超链接
})
//class操作
<script src="jquery-3-1-1.js">
<p class="c1">P1
<p class="c1">P2
<p class="c1">P3
$("p")
$("p").addClass("c2") 添加标签c2
$("p").addClass("c3") 添加标签c3 有的话不会重复添加
$("p").removeClass("c3")
左侧菜单实例
<script>
$(".title").click(function () {
$(this).next().removeClass("hide");
$(this).parent().siblings().children(".con").addClass("hide");
})
<script>写成一行
$(".title").click(function () {
//jquery支持链式操作
$(this).next().removeClass("hide").parent().siblings().children(".con").addClass("hide");
})
一个作业:
表格操作,补上编辑。 编辑使用JS写
Jquery写表格的增删改
预习文档节点处理 https://6936986.html 表格增删改
$("")