本文主要和大家分享js和jquery对操作dom的方法,主要以代码的方法,希望能帮助到大家。查询节点:js:1.根据id查询;2.根据标签名查询;3.根据name查询;4.根据层次查询;详情如下:
<script>
//1.根据id查询节点
var ul = document.getelementbyid("city");
var cd = document.getelementbyid("cd");
console.log(ul);
console.log(cd);
//2.根据标签名查询节点
//2.1在整个文档(document)内查询
console.log(document.getelementsbytagname("li"));
//2.2在某个元素节点(element)内查询
console.log(ul.getelementsbytagname("li"));
//3.根据name查询节点(基本都是给表单控件用的)
console.log(document.getelementsbyname("sex"));
//4.根据层次查询节点
//获取已得到的节点的父亲、孩子和兄弟
//4.1获取父亲,返回的是单个值
console.log(cd.parentnode);
//4.2获取孩子,返回的是多个值
//这种方式返回的节点是个数组,并且会把空格当做孩子放入数组中
console.log(ul.childnodes);
//不带空格的获取孩子的节点
console.log(ul.getelementsbytagname("li"));
//标准api中没有直接查询兄弟的方法,
//必须通过查询父亲、查询孩子来实现查询兄弟,
//下面的语句输出:上海
console.log(cd.parentnode.getelementsbytagname("li")[1]);
</script>
jquery:直接利用jquery选择器,选中元素,进行操作即可;请查看另一片文章:jquery选择器https://blog.csdn.net/huang_yx/article/details/79686975(点击打开链接)
读写节点:js:大致分为:1.读写节点名称和类型;2.读写节点内容;3.读写节点属性;4.读写表单控件的值;详情如下:
<script>
//1.读取节点的名称和类型
//获取p1
var p1 =document.getelementbyid("p1");
console.log(p1.nodename);
console.log(p1.nodetype);
//2.读写节点的内容(<p>内容</p>)
//innerhtml:支持子标签
console.log(p1.innerhtml)
console.log(p1.innerhtml = '单标签试一试')
console.log(p1.innerhtml)
//innertext:不支持子标签
var p2 = document.getelementbyid("p2");
console.log(p2.innertext);
p2.innertext = "2.<u>查询</u>节点";
//3.读写节点的属性
//3.1.标准的api是下面的三个
//先取到这个节点
var img = document.getelementbyid("li");
console.log(img.getattribute("src"));
img.setattribute("src", "../img/add.png");
img.removeattribute("src");
//3.2.新的api(低版本浏览器不支持)
//节点.属性名(class除外,要写成classname)
//注意点:.style和.classname是标准的
var a = document.getelementbyid("baidu");
console.log(a.href);
a.href = "undifined";
//4.读写表单控件的值
//input.value/input.value=""
</script>
jquery:
读写节点的html内容(支持子标签):对应上面js的第2点
obj.html()/obj.html("<span>123</span>")
读写节点的文本内容(不支持子标签):对应上面js的第2点
obj.text()/obj.text("123")
读写节点的属性值:对应上面js第3点
obj.attr("属性名")/obj.val("属性名","属性值")
读写节点的value属性值:对应上面js第4点
obj.val()/obj.val("abc")
注:obj表示jquery对象
增删节点:js对节点的增删只能通过父节点,jquery则样方便很多,有很多对应的apijs:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>增删节点</title>
<script>
function add(){
//创建新节点
//相当于在内存中创建了一个<li></li>
var li = document.createelement("li");
//相当于在<li>中创建了一个内容
li.innerhtml = "天津";
//追加新节点,可以通过父亲的孩子获取,也可以直接通过id获取
var ul = document.getelementbyid("city");
ul.appendchild(li);
}
//插入到节点中间
function insertion(){
//创建新节点
var li = document.createelement("li");
li.innerhtml = "成都";
//插入新节点,到广州之前
var ul = document.getelementbyid("city");
var gz = document.getelementbyid("gz");
ul.insertbefore(li, gz)
}
//删除节点,必须通过父亲来删除
function del(){
//获取要删除的节点
var sz = document.getelementbyid("sz");
//必须通过父亲才能取删除孩子的节点
sz.parentnode.removechild(sz);
}
</script>
</head>
<body>
<p>
<input type="button" value="增加"
onclick="add();"/>
<input type="button" value="插入"
onclick="insertion()"/>
<input type="button" value="删除"
onclick="del()"/>
</p>
<ul id="city">
<li>北京</li>
<li>上海</li>
<li id="gz">广州</li>
<li id="sz">深圳</li>
</ul>
</body>
</html>
jquert:
创建节点:
$(节点内容);
$(45a2772a6b6107b401db3c9b82c049c2你好54bdf357c58b8a65c66d7c19c8e4d114)
插入节点:常用api
parent.append(obj):作为最后一个子节点添加进来
parent.prepend(obj):作为第一个子节点添加进来
brother.after(obj):作为下一个兄弟节点添加进来
brother.before(obj):作为上一个兄弟节点添加进来
删除节点:常用api
obj.remove():删除节点
obj.remove(selector):只删除满足selector的节点
obj.empty():清空节点
遍历节点:jquery对应的一些api,方便节点操作children()/children(selector):直接子节点
next()/next(selector):下一个兄弟节点
prev()/prev(selector):上一个兄弟节点
siblings()/siblings(selector):所有兄弟
find(selector):查找满足选择器的所有后代
parent():父节点
总结:js和jquery对节点的操作无非都是增删改查之类,但是jquery是一个js的框架,它的核心理念:write less,do more;极大的简化代码的书写。它封装了js,css,dom,提供了一致的、简约的api,所有使用起来更加方便快捷,相应的写法也更加简单。
相关推荐:
js中dom元素的操作方法
js之dom事件流详解
javascript之优化dom
以上就是js和jquery对操作dom的方法的详细内容。