<!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. ModuleNotFoundError: No module named 'phkit.pinyin'

    1 产生背景 在mac系统本地使用正常,在linux系统上phkit包缺少相应的python文件 2 解决方案 自己想出来,手动上传本地相关python代码到linux服务器 3 解决过程 首先通过项 ...

  2. Yandex企业邮箱申请教程

    注册账号 首先你需要有Yandex的账号,这里就不多说了. 注册企业邮箱 注册完账号并登录后打开:https://connect.yandex.com/pdd/ 输入你的域名 来到验证界面,这里建议m ...

  3. 一个通用的两级Makefile例子

    目的 进行如项目的顶层目录后,运行make,即可直接编译项目中所有的源文件,并生成最终的可执行文件 实现头文件自动依赖 添加源文件不用修改Makefile,且可以自动编译新文件 顶层目录下添加文件夹, ...

  4. [leetcode/lintcode 题解] Amazon面试题:连接棒材的最低费用

    为了装修新房,你需要加工一些长度为正整数的棒材 sticks. 如果要将长度分别为 X 和 Y 的两根棒材连接在一起,你需要支付 X + Y 的费用. 由于施工需要,你必须将所有棒材连接成一根. 返回 ...

  5. 如何用redis做缓存

    redis缓存 在互联网应用中经常需要用redis来缓存热点数据. redis数据在内存,可以保证数据读取的高效,接近每秒数十万次的吞吐量 减少下层持久层数据库读取压力,像mongodb,每秒近千次读 ...

  6. 给自己挖坑——DateWay

    参考文章 官方手册 官方博客 填坑 目录 简介 使用 1. 引入相关依赖 2. 配置 Dataway,并初始化数据表 3. 配置数据源 4. 把数据源设置到 Hasor 容器中 5. 在SprintB ...

  7. java 心跳机制

    心跳机制:就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开. 心跳包 心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定 ...

  8. python基础day1&2

    解决中文乱码问题 在开头加上 -*- encoding:utf-8 -*- if条件 if 条件: 结果#if elif else是单选,只走一条路 num = input('Please input ...

  9. 预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值

    PHP $_POST 变量 在 PHP 中,预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值. $_POST 变量 预定义的 $_POST 变量用 ...

  10. PHP strripos() 函数

    实例 查找 "php" 在字符串中最后一次出现的位置: <?php高佣联盟 www.cgewang.comecho strripos("I love php, I ...