需要注意:
- 关于节点(Node)和元素(Element)
- getElement和getElements
DOM
DOM:文档对象模型
浏览器网页就是一个DOM树形结构
- 对DOM节点进行增删改查
获取DOM节点
注意:Element是直接获取节点,即在接下来可以直接通过"."对节点进行操作,而Elements是获取一个节点数组,即使满足条件的节点只有一个,也需要取出数组中的第i个来真正取得节点。
//标签选择器
let h1=document.getElementsByTagName('h1');
//ID选择器
let p1=document.getElementById('p1');
//class选择器
let p2=document.getElementsByClassName('p2');
let father= document.getElementById('father');
//获得最后一个、第一个、所有子节点
father.lastChild;
father.firstChild;
father.childNodes;//返回NodeList
father.children;//返回HTMLCollection
// 获得父节点
father.parentNode;
//以上都为原生代码,以后推荐使用jQuery;
更新节点
获取到目标节点之后,其实包括子节点、style样式和其中的html代码,都是节点内的子元素。因而可以很方便的对他们进行操作以更新节点。
//先获取节点
let div1=document.getElementById('div1');
div1.innerText='hello';//改变文本内容
div1.innerHTML='<a href="https://www.baidu.com">123</a>';//可以解析html
div1.id='123';//更改id
div1.className="hello";//更改class
div1.style.background='red';//操作CSS
删除节点
通过父节点删除
//获取要被删除节点的父节点
let father=document.getElementById("div").parentNode;
//删除,删除此节点后,此节点的所有子节点也会被删除
father.removeChild(document.getElementById("div"));
插入节点
- innerHTML
- appendChild();
//获取父节点
let father=document.getElementsByTagName('div');
father=father[0];
//方法一:设置父元素的HTML代码
//会覆盖原有HTML内容,空元素中添加可以使用
father.innerHTML="<p>hello!</p>";
//方法二:appendChild()方法
father.parentNode.appendChild(father.firstChild);
//创建一个新的标签
let p=document.createElement('p');
p.style.color='red';//设置样式
//标签的属性(比如a的href script的src)都是节点的属性,可以设置
p.setAttribute('id','id1');//也可以使用.xxx=的形式,但更推荐这种
p.innerText="新朋友";
father.appendChild(p);
操作表单
- 文本框 text password
- 下拉框 select
- 单选框 radio
- 多选框 checkbox
- 。。。
<form action="post">
<span>用户名:</span><input type="text" id="username">
<input type="radio" name="sex" value="man" id="boy">男
<input type="radio" name="sex" value="woman" id="girl">女
</form>
<script>
let input_text=document.getElementById('username');
console.log(input_text.value);//获得输入框的值
//对于多选或者单选框,value对应的只是在表单提交时,key对应的value值
//想要获取单选框或者多选框中对应选项是否被选中,应该访问.checked属性
document.getElementById('boy').checked=true;//设置为选中状态
</script>
提交表单(验证)
<form method="post" action="index.html" onsubmit="return submit();">
<span>用户名:</span><input type="text" id="username" name="username">
<span>密码:</span><input type="password" id="password" name="password">
<!-- 绑定事件 onclick被点击-->
<button type="submit"></button>
</form>
<script>
function submit() {
let input_username=document.getElementById('username');
let input_password=document.getElementById('password');
//md5加密
input_password.value=md5(input_password.value);
//可以再此进行输入格式验证 比如密码是否同时用数字字母符号
//由于表单在onsubmit设置为return submit();
//可以在函数中设置返回值来控制表单是否提交 return false则不提交
return false;
}
</script>
初识jQuery
需要导入jQuery.js包后使用,就是一些包装好的js函数
<a href="index.html" id="test">点我啊</a>
<script>
//使用格式:
//$('选择器').动作 其中选择器即css中选择器
$('#test').click(function () {
alert("你还真点?");
});
</script>
jQuery选择器
//原生js,选择器少,麻烦不好记
//标签
document.getElementsByTagName();
//id
document.getElementById();
//类
document.getElementsByClassName();
//jQuery:css中所有选择器都能用
$('p').click();
$('#id1').click();
$('.class1').click();
//....
jQuery事件
$('p').mousedown();//鼠标按下
$('p').mouseenter(function () {alert("爬");});//鼠标进入
jQuery操作DOM
let text;
text =$('body').text();//获得值
$('body').text("设置值");//设置值
text =$('body').html();//获得值
$('body').html("设置值");//设置值
//添加css样式:不会覆盖
$('body').css('color','red');
$('body').css('background','black');
//隐藏和显示
$('body').hide();
$('body').show();