DOM(Document Object Model):
结点的概念:整个文档就是由层次不同的多个节点组成,可以说结点代表了全部内容。
结点类型
1.元素结点
2.属性结点
3.文本结点
结点的注意点:
1.文本节点和属性结点都看作元素结点的子结点
2.我们一般所说的结点指的就是元素结点,将html标签看作是一个对象,并用“结点”称呼它
3.结点的关系有:父子关系、兄弟关系
1.获取元素结点
1)直接获取
① document.getElementById()
② document.getElementsByName()
③ document.getElementsByTagName()
2)间接获取
父子关系
firstChild lastChild childNodes
子父关系
parentNode
兄弟关系
nextSibling previousSibling
2.操作属性结点
1)通过对象“.”属性,来操作属性
优:可以动态获取用户修改的属性值
缺:不能获取自定义属性的值
2)getAttribute("key") setAttribute("key","value") removeAttribute("key")
优:可以获取自定义属性的值
缺:不能动态获取用户修改的属性值
3.处理文本结点
1) 通过对象.innerText 获取标签内部的文本信息
2) 通过对象.innerHTML 获取标签内部的HTML代码
4.动态改变DOM结构
1)创建一个结点对象
document.createElement("标签名")
2)(父结点)追加子结点对象
fatherNode.appendChild(子结点对象)
3)(父结点)在指定结点前添加子结点
fatherNode.insertBefore(新结点对象,参考结点对象)
4)(父结点)替换旧的子结点对象
fatherNode.replaceChild(新结点对象,旧结点对象)
5)(父结点)删除旧子结点对象
fahterNode.removeChild(旧结点对象)
5.动态改变元素的CSS样式(不重要)
1)我们通过对象.style属性操作对象的css样式:样式名称中有“-”将“-”去掉,并将“-”后一个字母改为大写来作为样式的新名称
2)我们希望通过class为一个对象添加一个class样式,添加属性名是className,而并非class(class是js的关键字,并能作为属性名存在)
<script type="application/javascript"> //1.获取元素结点 //1)直接获取 // ① document.getElementById() function getEle1(){ var obj=document.getElementById("userid") console.log(obj) } // ② document.getElementsByName() function getEle2() { // 获取的是一个数组 var obj = document.getElementsByName("fav"); console.log(obj) } // ③ document.getElementsByTagName() function getEle3(){ var obj = document.getElementsByTagName("input"); console.log(obj); } function getEle4(){ var father = document.getElementById("regForm"); var sons = father.childNodes; // 获取指定位置 console.log(sons[1]); // firstChild 获取第一个 console.log(father.firstChild); // lastChild 获取最后一个 console.log(father.lastChild); } // 子父关系 parentNode function getEle5(){ var son = document.getElementById("userid"); console.log(son.parentNode) } // 兄弟关系 nextSibling 下一个对象 //previousSibling当前结点的前一个结点返回紧邻当前元素之前的元素 function getEle6(){ var bro = document.getElementById("userid"); console.log(bro.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling); bro.previousSibling } function getField1(){ var obj = document.getElementById("nickid"); //console.log(obj.type); //将昵称的样式改为password //obj.type = "password"; var objval = obj.getAttribute("name"); console.log(objval); obj.setAttribute("abcd","5678"); obj.removeAttribute("type"); // 可以获取改变后的属性 console.log(obj.value) // 只能获取初始定义的属性 console.log(obj.getAttribute("value")); } // 1) 通过对象.innerText 获取标签内部的文本信息 function getText1(){ var myDiv = document.getElementById("myDiv"); console.log(myDiv.innerText); } // 2) 通过对象.innerHTML 获取标签内部的HTML代码 function getText2(){ var myDiv = document.getElementById("myDiv"); console.log(myDiv.innerHTML); } // 添加文本 function getText3(){ var myDiv = document.getElementById("myDiv"); myDiv.innerText = "<img src='1.jpg' />"; } // 添加代码 function getText4(){ var myDiv = document.getElementById("myDiv"); myDiv.innerHTML = "<img src='1.jpg' />"; } </script> </head> <body> <button onclick="getEle1();">点我测试1</button> <button onclick="getEle2();">点我测试2</button> <button onclick="getEle3();">点我测试3</button> <button onclick="getEle4();">点我测试4</button> <button onclick="getEle5();">点我测试5</button> <button onclick="getEle6();">点我测试6</button> <hr/> <button onclick="getField1();">属性测试1</button> <hr/> <button onclick="getText1();">文本测试1</button> <button onclick="getText2();">文本测试2</button> <button onclick="getText3();">文本测试3</button> <button onclick="getText4();">文本测试4</button> <hr/> <form id="regForm"> 用户名:<input id="userid" type="text" name="username"><br/> 密码:<input type="password" name="password"><br/> 昵称:<input id="nickid" type="text" name="nickname" value="大名鼎鼎" abcd="1234" ><br/> 性别:男<input type="radio" name="gender" value="nan"> 女<input type="radio" name="gender" value="nv"><br/> 爱好:狗<input type="checkbox" name="fav" value="dog"> 猫<input type="checkbox" name="fav" value="cat"> 羊驼<input type="checkbox" name="fav" value="yt"><br/> <input type="submit" value="注册"> </form> <div id="myDiv"><b>hello</b></div> </body>
动态改变DOM结构
1)创建一个结点对象
document.createElement("标签名")
<script type="application/javascript"> function changeDom1(){ var ipt=document.createElement("input"); } </script> <button onclick="changeDom1();">创建结点对象</button>
2)(父结点)追加子结点对象
fatherNode.appendChild(子结点对象)
function changeDom2() { var father = document.getElementById("regForm"); var ipt = document.createElement("input"); ipt.type = "text"; father.appendChild(ipt); } <button onclick="changeDom2();">追加子结点对象</button>
3)(父结点)在指定结点前添加子结点
fatherNode.insertBefore(新结点对象,参考结点对象)
function changeDom3() { var father = document.getElementById("regForm"); var refChild = document.getElementById("brid"); var newChild = document.createElement("input"); newChild.type = "text"; father.insertBefore(newChild, refChild); } <button onclick="changeDom3();">插入子结点对象</button>
4)(父结点)替换旧的子结点对象
fatherNode.replaceChild(新结点对象,旧结点对象)
function changeDom4() { var father = document.getElementById("regForm"); var refChild = document.getElementById("brid"); var newChild = document.createElement("input"); newChild.type = "text"; father.replaceChild(newChild, refChild); } <button onclick="changeDom4();">替换子结点对象</button>
5)(父结点)删除旧子结点对象
function changeDom5() { var father = document.getElementById("regForm"); var refChild = document.getElementById("nickid"); father.removeChild(refChild); } <button onclick="changeDom5();">删除子结点对象</button>
动态改变元素的CSS样式(不重要)
<style type="text/css"> .addstyle{ color: red; font-size: 72px; text-decoration: underline; } </style> <script type="application/javascript"> /* 5.动态改变元素的css样式 1)我们通过对象.style属性操作对象的css样式:样式名称中有“-”将“-”去掉,并将“-”后一个字母改为大写来作为样式的新名称 2)我们希望通过class为一个对象添加一个class样式,添加属性名是className,而并非class(class是js的关键字,并能作为属性名存在) */ function fontGreater(){ var myDiv = document.getElementById("myDiv"); console.log(myDiv); myDiv.style.fontSize = "36px"; myDiv.style.fontFamily = "宋体"; } function changeFont(){ var myDiv = document.getElementById("myDiv"); myDiv.className = "addstyle"; //myDiv.setAttribute("class","addstyle"); } </script> </head> <body> <button onclick="fontGreater()">放大字体</button> <button onclick="changeFont()">添加样式</button> <div id="myDiv" >你好世界!</div> </body>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
javascript,Dom
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]