<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>调查表</title>
<style>
*{
margin:0;
padding:0;
}
#total{
width:300px;
height:200px;
margin:0 auto;
border:1px solid black;
}
#city li,#game li,#phone li{
list-style: none;
float: left;
border:1px solid black;
margin:0 10px;
background-color: green;
}
.inner1{
width:300px;
height: 80px;
border:1px solid black;
margin: 10px auto 0;
}
#btnList div button{
width:220px;
margin-top:10px;
}
#btnList div button:hover{
color:red;
background-color: yellow; } </style>
<script>
/*定义函数:专门为指定元素绑定单击响应函数
*参数:idStr:绑定单击响应函数的对象id属性值
* */
function myClick(idStr,fun){
const btn = document.getElementById(idStr);
btn.onclick=fun;
}
window.onload=function () { //此处不加,会导致页面无法显示
myClick("btn01",function () {
//查找#bj节点
const bj = document.getElementById("bj");
//打印bj
//通过innerHTML获取元素内部的html代码
alert(bj.innerHTML);
}); myClick("btn02",function () {
//查找li节点,封装到数组中
const lis = document.getElementsByName("li");
// alert(lis.length);
for(let i=0; i<lis.length; i++){
alert(lis[i].innerHTML)
}
}); myClick("btn03",function () {
//查找name=gender的所有节点
const inputs = document.getElementsByName("gender");
// alert(inputs.length);
for(let i=0; i<inputs.length; i++){
//innerHTML用于获取元素内部的HTML代码,但是Input没有内部,对于单标签没有意义
//读取元素的属性
alert(inputs[i].value)
/*如果读取元素节点属性,直接使用元素.属性名
例子: 元素.id 元素.name 元素.value
注意:class属性不能采用这种方式,可以使用 元素.className*/
}}); myClick("btn04",function () {
// 查找#city下的所有li节点
//获得id为city的元素
const city = document.getElementById("city");
//查找#city下所有li节点
const lis = city.getElementsByTagName('li');
for(let i=0; i<lis.length; i++){
alert(lis[i].innerHTML)
}}); //返回#city下的所有子节点
// childNodes属性会获取包括文本节点在内的所有节点(包括空格也是文本)
// 注意:IE8以下的浏览器中不会将空白文本当成子节点
//children属性可以获取当前元素的所有子元素
myClick("btn05",function () {
const city = document.getElementById("city");
const cns = city.children;
alert(cns.length);
}); myClick("btn06",function () {
const phone=document.getElementById("phone");
//包括空白文本节点
// const pho1=phone.firstChild;
//firstElementChild获得当前元素的第一个子元素
const pho1=phone.firstElementChild;
alert(pho1.innerHTML);
}); myClick("btn07",function () {
//返回#bj的父节点
const bj=document.getElementById("bj");
const pn=bj.parentNode;
//alert(pn.innerHTML);
//innerText:该属性可以获取到元素内部的文本内容,与innerHTML不同,会自动将html标签去除
alert(pn.innerText);
}); myClick("btn08",function () {
//返回#android的前一个兄弟节点
const android=document.getElementById("android");
//前一个兄弟节点(可能获取到空白的文本)
// const ad0=android.previousSibling;
//前一个元素兄弟
const ad=android.previousElementSibling;
alert(ad.innerText);
}); myClick("btn09",function () {
//读取#username的value属性值
const um=document.getElementById("username");
//读取um的属性值
alert(um.value);
}); myClick("btn10",function () {
//设置#username的value属性值
const um=document.getElementById("username");
//设置um的属性值
um.value="xxxxx";
}); myClick("btn11",function () {
//返回#bj的文本值
const bj=document.getElementById("bj");
// alert(bj.innerText);
alert(bj.firstChild.nodeValue);
});
}
</script>
</head>
<body>
<div id="total">
<div class="inner">
<p>
你喜欢哪个城市?
</p>
<ul id="city">
<li id="bj">北京</li>
<li>上海</li>
<li>东京</li>
<li>首尔</li>
</ul>
<br/>
<br/> <p>你喜欢哪款单机游戏?</p>
<ul id="game">
<li id="r1">红警</li>
<li>实况</li>
<li>极品飞机</li>
<li>魔兽</li>
</ul>
<br/>
<br/> <p>你手机的操作系统是?</p>
<ul id="phone">
<li>IOS</li>
<li id="android">Android</li>
<li>Windows Phone</li>
</ul>
</div>
</div>
<div class="inner1">
<label>
gender:
<input type="radio" name="gender" value="male"/>
</label>
<label>
Male:
<input type="radio" name="gender" value="female"/>
</label>
Female
<br>
<br>
<label>
name:
<input type="text" name="name" id="username" value="abcde"/>
</label>
</div>
<div id="btnList">
<div><button id="btn01">查找#bj节点</button></div>
<div><button id="btn02">查找所有li节点</button></div>
<div><button id="btn03">查找name=gender的所有节点</button></div>
<div><button id="btn04">查找#city下的所有li节点</button></div>
<div><button id="btn05">返回#city下的所有子节点</button></div>
<div><button id="btn06">返回#phone的第一个子节点</button></div>
<div><button id="btn07">返回#bj的父节点</button></div>
<div><button id="btn08">返回#android的前一个兄弟节点</button></div>
<div><button id="btn09">读取#username的value属性值</button></div>
<div><button id="btn10">设置#username的value属性值</button></div>
<div><button id="btn11">返回#bj的文本值</button></div>
</div>
</body>
</html>

JS实例-DOM查询的更多相关文章

  1. JS实例—DOM的增删改

    <!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8" ...

  2. js的dom对象(带实例超详细全解)

    js的dom对象(带实例超详细全解) 一.总结 一句话总结: 1.DOM中的方法区分大小写么? 解答:区分 2.DOM中元素和节点的关系式什么? 解答:元素就是标签,节点中有元素节点,也是标签,节点中 ...

  3. js的dom测试及实例代码

    js的dom测试及实例代码 一.总结 一句话总结: 1.需要记得 创建 标签和创建文本节点都是document的活:document.createTextNode("Rockets的姚明&q ...

  4. JS 实现Json查询的方法实例

    其实很简单,我这部分代码,前一部分是简单的实现如何使用JS写模板,第二个就是具体的实现了JSON查询的一个扩展. 以后查询Json就有了利器了. 代码如下: /*         * 定义模板函数   ...

  5. [百度地图] 用于类似 DWZ UI 框架的 百度地图 功能封装类 [MultiZMap.js] 实例源码

    MultiZMap 功能说明 MultiZMap.js 本类方法功能大多使用 prototype 原型 实现,它是 ZMap 的多加载版本,主要用于类似 DWZ 这个 多标签的 UI 的框架: 包含的 ...

  6. js的dom操作(整理)(转)

    js的dom操作整理(整理)(转) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来来更加方便的进行dom操作 1.dom是什么? 对于JavaS ...

  7. js的DOM操作整理(整理)

    js的DOM操作整理(整理) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来更加方便的进行dom操作 1.dom是什么? 对于JavaScrip ...

  8. 框架操作DOM和原生js操作DOM比较

    问题引出 对于Angular和React操作DOM的速度,和原生js操作DOM的速度进行了一个比较: 一个同学做的demo 代码如下: <!DOCTYPE html> <html n ...

  9. JS实例

    JS实例 1.跑马灯 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

随机推荐

  1. Python Ethical Hacking - VULNERABILITY SCANNER(1)

    HTTP REQUESTS BASIC INFORMATION FLOW The user clicks on a link. HTML website generates a request(cli ...

  2. webpack源码-loader的原理

    版本 webpack :"version": "3.12.0", webpack配置中的loaders配置是如何传递的 webpack/lib/NormalMo ...

  3. DirectX11 With Windows SDK--35 粒子系统

    前言 在这一章中,我们主要关注的是如何模拟一系列粒子,并控制它们运动.这些粒子的行为都是类似的,但它们也带有一定的随机性.这一堆粒子的几何我们叫它为粒子系统,它可以被用于模拟一些比较现象,如:火焰.雨 ...

  4. MySQL中的循环

    MySQL中的三中循环 while . loop .repeat 求 1-n 的和第一种 while 循环 : /* while循环语法: while 条件 DO 循环体; end while; */ ...

  5. WinForm微信扫码登录

    源码还需优化,不喜勿喷. 微信官方文档 : https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat ...

  6. 你的JavaBean是否真的需要实现Serializable

    众所周知 如果一个对象需要进行网络传输,那么该对象就需要实现Serializable接口,为了防止反序列失败,该对象需提供一个默认的serialVersionUID(该值在反序列化的时候会进行校验校验 ...

  7. BUUCTF-web ZJCTF,不过如此

    很明显要利用伪协议读next.php base64解码后查看源码 <?php $id = $_GET['id']; $_SESSION['id'] = $id; function complex ...

  8. 完成的设备扫描项目的几个关键程序,包括activity之间的转换

    module 的 gradle.build最后三行的compile 是关键dependencies { implementation fileTree(dir: 'libs', include: [' ...

  9. Cobbler 部署

    环境介绍 Cobbler 操作系统: Centos-7.2-x86_64 Cobbler服务器地址: 10.90.0.10 部署 Cobbler 安装 Centos epel 原 [root@node ...

  10. Android实现EditText插入表情、超链接等格式

    参考:https://www.jianshu.com/p/84067ad289d2 参考:https://www.jianshu.com/p/d82ac2edc7e8