1.案例一:在末尾添加节点
第一个:获取到ul标签
第二部:创建li标签
document.createElement("标签名称")方法
第三步:创建文本
document.createTextNode("文本内容")
第四步:将文本添加到li标签下
appendChild方法
第五步:将标签添加到ul标签下
appendChild方法

2.元素对象(element对象)
**要操作element对象,首先必须要获取到element,
-使用document里面相应的方法获取

**方法
***获取属性里面的值
getAttribute("属性名称")
- var input1 = document.getElementById("inputid");
//alert(input1.value);
alert(input1.getAttribute("value"));

***设置属性的值
input1.setAttribute("class", "haha");

***删除属性
input1.removeAttribute("name");
** 不能删除value.'

***想要获取标签下面的子标签
**使用属性 childNodes,但是这个方法是兼容性很差
**获得标签下面的子标签下面字标签的唯一有效方法,使用getElementByTagName方法
//获取到ul下面的所有的子标签(子元素)
//获取ul标签
var ulid = document.getElementById("id_ul");
//获取ul下的子标签
var lis = ulid.childNodes;//浏览器兼容性很差
alert(lis);

var lis2 = ulid.getElementByTagName("li");
alert(lis2);

3.Node对象属性
*nodeName
*nodeType
*nodeValue

*使用dom解析html时候,需要html里面的标签,属性和文本都封装成对象

*标签节点对应的值
alert(span1.nodeType);  //1
alert(span1.nodeName);  //大写的标签名称,比如SPAN
alert(span1.nodeValue); //null
*属性节点对应的值
alert(id1.nodeType);  //2
alert(id1.nodeName);  //属性的名称,大写
alert(id1.nodeValue); //属性的值
*文本节点对应的值
alert(text1.nodeType);  //3
alert(text1.nodeName);  //#text
alert(text1.nodeValue); //文本内容

4.Node对象的属性二
<ul>
<li>1qqqqqqqq</li>
<li>wwwwwww</li>
</ul>
*父节点
-ul是li的父节点
//得到li1
var li1 = document.getElementById("li1");
//得到ul
var ul1 = document.getElementById("ulid");
alert(ul1.id);
-parentNode
*子节点
-li是ul的子节点
-childNodes:得到所有的子节点,但是兼容性很差
-firstChild:获取第一个子节点
var ul1 = document.getElementById("ulid");
var li11 = ul1.fristChild();
alert(li11);
-lastChild:获取最后一个子节点
var li41 = ul1.lastChild();
alert(li41);

*同辈节点
-li直接关系是同辈节点
-nextSibling:获取下一个节点
-proviousSibling:获取上一个节点
//获取下一个节点
var li3 = document.getElementById("li3");
var li4 = li3.nextSibling.id;
alert(li4);
//获取上一个节点
alert(li3.previousSibling.id);

5.操作dom树
**appendChild方法
-添加子节点到末尾
-特点:类似于剪切的效果

**insertBefore(newNode,oldNode)方法
-在某个节点之前插入一个新的节点
-两个参数
*要插入的节点
*在谁之前插入
-插入一个节点,节点不存在,创建
1.创建标签
2.创建文本
3.把文本添加到标签上
-代码:
/*
1.获取到il3标签
2.创建li
3.创建文本
4.把文本添加到li下
5.获取到ul
6.吧li添加到ul下(在<li id="il3">789</li>
之前添加<li>llll</li>)
*/

var il31 = document.getElementById("il3");

var il5 = document.createElement("li");

var text = document.createTextNode("llllllll");

il5.appendChild(text);

ulid21 = document.getElementById("ulid2");

//insertBefore(newNode, oldNode);
ulid21.insertBefore(il5, il31);

**removeChild方法:删除节点
-通过父节点删除,不能通过自己来删除自己
-/*
   1.获取到il2标签
   2.获取父节点ul标签
   3.执行删除(通过父节点删除)
   */
//获取li标签
var li21 = document.getElementById("il2");

//获取父标签

//两种方式 
//1.通过id获取:
//2.通过属性parentNode获取

var ul2 = document.getElementById("ulid2");

//删除(通过父节点)
ul2.removeChild(li21);

**replaceChild(newNode, oldNode)方法;替换节点
-两个参数
**第一个参数:新的节点(替换成的节点)
**第二个参数:旧的节点(被替换的节点)
-代码
/*
1.创建新的节点
2.创建新的文本
3.添加新的文本到新的节点中
4.获取父节点
5.获取要被替换的节点
6.替换节点
*/

//1创建新的节点
var il5 = document.createElement("li");
//创建新的文本
var text = document.createTextNode("tyu");

//添加新的文本到新的节点中
il5.appendChild(text);

//获取父节点
var ulid2 = document.getElementById("ulid2");

//获取要被替换的节点
var il2 = document.getElementById("il2");

//replaceChild()  替换节点
ulid2.replaceChild(il5, il2);
}

**cloneNode(boolean)方法:复制节点
-代码:
//把ul列表复制到另外一个div里面
/*
1.获取到ul
2.执行复制方法 cloneNode方法复制 true
3.把复制之后的内容放到div里面去
** 获取到div
** appendChild方法

*/

//获取ul
var ul = document.getElementById("ulid2");

//复制ul,放到类似剪切板里面
var ulcopy = ul.cloneNode(true);
//获取到div
var divv = document.getElementById("divv");

//复制到divv中
divv.appendChild(ulcopy);

**操作dom总结(*********************)
*获取节点使用方法
getElementById();通过节点的id属性,查找对于节点
getElementsByName():通过节点的name属性,查找对应节点
getElementsByTagName():通过节点名称,查找对应节点
*插入节点的方法
insertBefore方法:在某个节点之前插入
appendChlid方法:在末尾添加,剪切粘贴
*删除节点方法
removeChild方法:通过父节点删除
*替换节点方法
replaceChild方法:通过父节点替换

6.innerHTML属性
*这个属性不是dom的组成部分,但是大多数浏览器都支持的属性

第一个作用:获取文本的内容
//获取span标签
var span1 = document.getElementById("spanid");
alert(span1.innerHTML);//获取标签中内容
第二个作用:向标签里面设置内容(可以是html代码)

**练习
向div里面添加一个表格
-代码:
var str = "<table>"
for (var i = 0; i < 10; i++) {
str += "<tr>"
for (var j = 0; j < 10; j++) {
str = str + "<td>"+i+"</td>";
}
str += "</tr>"
}
str += "</table>"

div1.innerHTML = str;
alert(str);

7.案例二:动态显示时间
*得到当前的时间
var date = new Date();   //得到不少一个常规的格式
var d1 = date.toLocaleString();  //格式化
*需要让页面每一秒获取时间
setInterval方法(定时器)
*显示到页面上
每一秒向div里面写一次时间
*使用innerHTML属性
*代码:
function getD1(){
//当前时间
var date = new date();

//格式化
var d1 = date.toLocaleString();

//获取div
var div11 = document.getElementById("div1");
div1.innerHTML = div11;
}
//动态显示时间(一秒写一次时间)
setInterval("getD1();", 1000); 

8.案例三:全选练习
**使用复选框上面一个属性判断是否选中
-checked属性
-checked=true:选中
-checked=false:不选中
*创建一个页面
**复选框和按钮
-四个复选框表示爱好
-还有一个复选框操作(全选和全不选)
**三个按钮:分别有事件
-全选
-全不选
-反选
//实现全选的操作
function selAll(){
/*
1.获取要操作的复选框
-使用getElementsByName()
2.返回是数组
-s属性 checked判断复选框是否选中
*** checked = true; //表示选中
*** checked = false; //表示不选中
-遍历数组,得到的是每一个checkbox
*把每一个checkbox属性checked=true
*/
//获取要操作的复选框
var loves = document.getElementsByName("love");
//遍历数组,得到每一个复选框
for (var i = 0; i < loves.length; i++) {
var love1 = loves[i]; //得到每一个复选框
//设置属性是true;
love1.checked = true;
}
}

//实现全不选操作
function selNo(){
//获取要操作的复选框
var loves = document.getElementsByName("love");
//遍历数组,得到每一个复选框
for (var i = 0; i < loves.length; i++) {
var love1 = loves[i]; //得到每一个复选框
//设置属性是true;
love1.checked = false;
}
}

//实现反选操作
function selOther(){
//获取要操作的复选框
var loves = document.getElementsByName("love");
//遍历数组,得到每一个复选框
for (var i = 0; i < loves.length; i++) {
var love1 = loves[i]; //得到每一个复选框
if (love1.checked) {
love1.checked = false;
}else{
love1.checked = true;
}
}
}

//实现全选或者全不选操作
function selAllNo(){

//获取全选或者全不选的复选框
var boxid = document.getElementById("boxid");
if (boxid.checked) {
var loves = document.getElementsByName("love");
//遍历数组,得到每一个复选框
for (var i = 0; i < loves.length; i++) {
var love1 = loves[i]; //得到每一个复选框
love1.checked = true;
}
}else{
var loves = document.getElementsByName("love");
//遍历数组,得到每一个复选框
for (var i = 0; i < loves.length; i++) {
var love1 = loves[i]; //得到每一个复选框
love1.checked = false;
}
}
}

9.案例四:下拉列表左右选择
*下拉选择框
<select>
<option>11</option>
<option>22</option>
<option>33</option>
<option>44</option>
</select>
*创建一个页面
**两个下拉选择框
-设置属性multiple属性
**四个按钮,有事件
*选择添加到右边
步骤
/*
1.获取到select1中的option(getElementsByTagName():返回的是数组)
-遍历数组,得到每一个option
2.判断是否被选中(属性:selected,判断是否被选中)
**selected = true:选中
**selected = false:没有选中
3.如果是选中,把选中的添加到右边去
4.得到select2
5.添加选中的部分
**appendChild方法
*/

*全部添加到右边
步骤
/*
1.获取到第一个select下面的option对象
2.返回数组,遍历数组
3.得到每一个option对象
4.得到select2
5.添加到select2下面
-appendChild方法
*/

*选中添加到左边
步骤
/*
1.获取到select2中的option(getElementsByTagName():返回的是数组)
-遍历数组,得到每一个option
2.判断是否被选中(属性:selected,判断是否被选中)
**selected = true:选中
**selected = false:没有选中
3.如果是选中,把选中的添加到右边去
4.得到select1
5.添加选中的部分
**appendChild方法
*/
*全部添加到左边
步骤
/*
1.获取到select2下面的option对象
2.返回数组,遍历数组
3.得到每一个option对象
4.得到select1
5.添加到select1下面
-appendChild方法
*/

*注意:在遍历其中获得的options数组中,因为每次遍历,数组的长度就会减少,这样,每次遍历,就会跳过部分option,所以,只有保持i的不变(i--),才可以正常遍历

10.案例五:省市联动
*创建一个页面
*在第一下拉框里面有一个事件:改变事件:onchange事件
-方法add1(this.value); 表示当前改变的option里面的value值
*创建一个二维数组,存储数据
*每个数组第一个元素是国家名称,后面的元素是国家里面的城市
/*
1、遍历二维数组
2、得到也是一个数组(国家对于关系)

3、拿到数组中的第一个值和传递过来的值做比较
4、如果相同,获取到第一个值后面的元素
5、得到city的select
6、添加过去(使用)appendChild方法
- 创建option(三步)
*/

/*
由于每次都要想city里面添加option
第二次添加,追加
* 每次添加之前,判断一下city里面是否有option,如果有,删除
*/

11.案例六:动态生成表格
*创建一个页面:两个输入框和一个按钮

*代码和步骤
var h = document.getElementById("h").value;
var l = document.getElementById("l").value;

var code = "<table border='1'>";
for (var i = 0; i < h; i++) {
code += "<tr>";
for (var j = 0; j < l; j++) {
code += "<td>a</td>";
}
code += "</tr>";
}

code += "</table>";

var div11 = document.getElementById("div1");
div1.innerHTML = code;

Javaweb学习笔记——(四)——————JavaScript基础&DOM目录的更多相关文章

  1. 【JAVAWEB学习笔记】06_jQuery基础

    接05的学习笔记. 四.使用JQ完成省市二级联动 1.需求分析 使用jquery完成省市二级联动 2.技术分析 2.1数组的遍历操作 方式一: $(function(){ // 全选/ 全不选 $(& ...

  2. 1.2(JavaScript学习笔记)JavaScript HTML DOM

    一.DOM DOM全称为document object model(文档对象模型). 此处的文档指当前HTML文档,对象指HTML标签. 当网页被加载时,浏览器会创建页面的文档对象模型. 下面结合具体 ...

  3. JavaScript学习笔记(2)——JavaScript和DOM的关系

    文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.DOM实际上是以面向对象方式描述的文档模型.DOM定义了表示和修改文档所需的 ...

  4. Javaweb学习笔记——(五)——————DOM&XML目录

    1.表单提交方式 *使用submit提交 <form> <input type="submit" /> </form> *使用button提交表 ...

  5. 【JAVAWEB学习笔记】05_jQuery基础

    晨读单词: toggle:切换 each:每个(遍历) append:追加(内部追加,将B追加到A的内部结尾处) appendTo:追加(内部追加,将A追加到B的内部结尾处) prepend:追加(内 ...

  6. 【JAVAWEB学习笔记】25_Linux基础

    Linux基础 学习目标 1.了解Linux的简介与安装 2.掌握Linux常用的命令 3.掌握Linux系统上JDK.Mysql.Tomcat的安装 一.Linux的简介 1.Linux的概述 Li ...

  7. 【JAVAWEB学习笔记】26_Linux基础:简介安装、常用命令和JDK、Mysql、Tomcat的安装

    Linux基础 学习目标 1.了解Linux的简介与安装 2.掌握Linux常用的命令 3.掌握Linux系统上JDK.Mysql.Tomcat的安装 一.Linux的简介 1.Linux的概述 Li ...

  8. 【JAVAWEB学习笔记】25_基础加强:类加载器、注解 @xxx和动态代理

    基础加强 学习目标 案例-自定义单元测试@MyTest 案例-全局的编码的解决 一.类加载器 1.什么是类加载器,作用是什么? 类加载器就加载字节码文件(.class) 2.类加载器的种类 类加载器有 ...

  9. JavaWeb学习笔记——jquery中的dom操作

     jquery中的dom操作 废话不说:直接上例子: 1.添加节点-html页面 Append:向每个匹配的元素内部追加内容. <body> <ul id="city& ...

随机推荐

  1. Angular 序列化和反序列化和遍历

    <!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...

  2. 编译安装openssl

    wget https://www.openssl.org/source/openssl-1.1.0g.tar.gztar xf openssl-1.1.0g.tar.gzcd openssl-1.1. ...

  3. Delphi下EasyGrid使用体会

    最近在编写软件的时候,非常需要一款支持多表头的StringGrid控件,朋友介绍使用EasyGrid控件,这款控件大概从04年开始就没有再更新,网上有关与它的资料也较少.但是通过其demo,此软件还是 ...

  4. PostgreSQL字段类型说明

    BIGSERIALSERIAL8 存储自动递增的惟一整数,最多 8 字节. BIT 固定长度的位串. BIT VARYING(n)VARBIT(n) 可变长度的位串,长度为 n 位. BOOLEAN  ...

  5. MySQL中条件放在where后面与放在on后面的区别

    假设有两种表:test_on_position表和address表,address表存放地址,test_on_position存放会员及其常用的地址,数据如下: address表: test_on_p ...

  6. First Knight UVALive - 4297(优化高斯消元解概率dp)

    题意: 一个矩形区域被分成 m*n 个单元编号为 (1, 1)至 (m, n),左上为 (1, 1),右下为(m, n).给出P(k)i,j,其中 1 ≤ i ≤ m,1 ≤ j ≤ n,1 ≤ k ...

  7. 精选Spring Boot三十五道必知必会知识点

    Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家.本文精选了三十五个常见的Spring Boot知识点,祝你一臂之力! 问题一 Spr ...

  8. 自学Linux Shell6.1-环境变量概念

    点击返回 自学Linux命令行与Shell脚本之路 6.1-环境变量概念 环境变量 在Linux中,很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息: bash shell使用环境变 ...

  9. cf786E ALT (最小割+倍增优化建图)

    如果把“我全都要”看作是我全不要的话,就可以用最小割解决啦 源点S,汇点T 我们试图让每个市民作为一个等待被割断的路径 把狗狗给市民:建边(S,i,1),其中i是市民 把狗狗给守卫:建边(j,T,1) ...

  10. Android -- 面试 -- 数据库升级策略

    升级:重写onUpgrade方法 确定 相邻版本 的差别,从版本1开始依次迭代更新,先执行v1到v2,再v2到v3…… 为 每个版本 确定与现在数据库的差别,为每个case撰写专门的升级代码. 降级 ...