history对象:

History 对象包含用户(在浏览器窗口中)访问过的 URL。窗口之间是相互独立的。

<input type="button" onclick="history.forward()">
<input type="button" onclick="history.back()">
<input type="button" onclick="history.go()">

location对象:

DOM对象:

(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。

HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法。

HTML 文档中的所有内容都是节点(NODE):

  • 整个文档是一个文档节点(document对象)
  • 每个 HTML 元素是元素节点(element 对象)
  • HTML 元素内的文本是文本节点(text对象)
  • 每个 HTML 属性是属性节点(attribute对象)
  • 注释是注释节点(comment对象)

节点(自身)属性:

  • attributes - 节点(元素)的属性节点
  • nodeType – 节点类型
  • nodeValue – 节点值
  • nodeName – 节点名称
  • innerHTML - 节点(元素)的文本值
<div id="div1">this is div</div>

<script>
var node = document.getElementById("div1");
console.log(node.attributes);
console.log(node.nodeType); //
console.log(node.nodeValue); //null
console.log(node.nodeName); //DIV
console.log(node.innerHTML); //this is div
</script>

导航属性:

  • parentNode - 节点(元素)的父节点 (推荐)
  • firstChild – 节点下第一个子元素
  • lastChild – 节点下最后一个子元素
  • childNodes - 节点(元素)的子节点
<div class="div1">
<div class="div2"></div>
<p></p>
</div> <script>
var div2=document.getElementsByClassName("div2")[0];
console.log(div2.nextSibling.nodeName) //text,为什么不是P
</script>

由于此种导航方式是节点导航,而空格或换行也文本节点,所以这个导航中包括文本节点,而这些换行或文本节点并不是我们想要的,所以除了parentNode导航属性外,其它的属性用处不大。

推荐导航属性:

parentElement  // 父节点标签元素
children   // 所有子标签
firstElementChild    // 第一个子标签元素
lastElementChild    // 最后一个子标签元素
nextElementtSibling   // 下一个兄弟标签元素
previousElementSibling   // 上一个兄弟标签元素

查找节点可以通过两种方式:一种是全局查找(页面查找)、第二种是局部查找

全局查找就是通过以下4种方法在整个页面查找:

  • 通过使用 getElementById() 方法
  • 通过使用 getElementsByTagName() 方法  //标签名称,如div、p等
  • 通过使用 getElementsByClassName() 方法
  • 通过使用 getElementsByName() 方法   //属性名称

局部查找就是在某个标签下查找:先通过全局查找找到某个标签对象,然后用这个标签对象调用下面方法。

  • 通过使用 getElementsByTagName() 方法
  • 通过使用 getElementsByClassName() 方法

因为id全局唯一,没必要进行局部查找,而Name这种方法,语法不支持。

注意:查找是方法,导航是属性!

Html DOM Event

下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作。

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick 当用户双击某个对象时调用的事件句柄。 onfocus 元素获得焦点。 //练习:输入框
onblur 元素失去焦点。 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange 域的内容被改变。 应用场景:通常用于表单元素,当元素内容被改变时触发.(三级联动) onkeydown 某个键盘按键被按下。 应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress 某个键盘按键被按下并松开。
onkeyup 某个键盘按键被松开。
onload 一张页面或一幅图像完成加载。
onmousedown 鼠标按钮被按下。
onmousemove 鼠标被移动。
onmouseout 鼠标从某元素移开。
onmouseover 鼠标移到某元素之上。
onmouseleave 鼠标从元素离开 onselect 文本被选中。
onsubmit 确认按钮被点击。

给元素添加事件属性的两种方法:一种是在标签里面直接加,另一种是在script里面通过属性来加。

<div onclick="func1()">第一种方式!</div>
<p id="abc">第二种方式!</p> <script>
function func1() {
alert(123);
} var ele = document.getElementById("abc");
ele.onclick=function () {
alert("你真行!");
}
</script>

利用Javascript中的DOM进行增删改查:

<script type="text/javascript">
//在第一个div中动态增加一个a标签. 该a标签点击之后跳转到百度首页.
function addNode(){
//1.获得 第一个div
var div = document.getElementById("div_1");
//2.创建a标签 createElement==>创建一个a标签 <a></a>
var eleA = document.createElement("a");
//3.为a标签添加属性 <a href="http://www.baidu.com"></a>
eleA.setAttribute("href", "http://www.baidu.com");
//4.为a标签添加内容 <a href="http://www.baidu.com">百度</a>
eleA.innerHTML = "百度";
//5.将a标签添加到div中
div.appendChild(eleA);
}
//点击后 删除div区域2
function deleteNode(){
//1 获得要删除的div区域
var div = document.getElementById("div_2");
//2.获得父亲
var parent = div.parentNode;
//3 由父亲操刀
parent.removeChild(div);
}
//点击后 替换div区域3 为一个美女
function updateNode(){
//1 获得要替换的div区域3
var div = document.getElementById("div_3");
//2创建img标签对象 <img />
var img = document.createElement("img");
//3添加属性 <img src="001.jpg" />
img.setAttribute("src", "001.JPG");
//4.获得父节点
var parent = div.parentNode;
//5.替换
parent.replaceChild(img, div);
}
//点击后 将div区域4 克隆一份 添加到页面底部 function copyNode(){
//1.获取要克隆的div
var div = document.getElementById("div_4");
//2.克隆 参数为true 那么克隆时克隆所有子元素. false 只克隆自己
var div_copy = div.cloneNode(true);
//3.获得父亲
var parent = div.parentNode;
//4.添加
parent.appendChild(div_copy);
} </script>

修改HTML DOM:

1、改变html内容:

<script>
var ele=document.getElementById("div1");
var ele1=document.createElement("p"); //通过document的cerateElement创建标签
ele.appendChild(ele1); //对拿到div标签添加子标签
ele1.innerHTML="hello"; //修改html内容,此种方式解释内容中的标签,innerText不解释。
ele1.setAttribute("id","p1"); //括号里面两个参数都是字符串
</script>

2、改变CSS样式:

<body>
<div id="div1">1223</div> <script>
var ele=document.getElementById("div1");
ele.style.color="red"; //后面加style,然后再加样式
alert(ele.getAttribute("id")); //div1,获取属性值。

3、关于class的属性:

elementNode.classname

elementNode.classlist.add()

elementNode.classlist.remove()

<head>
<style>
.bigger{
font-size: 30px;
color: red;
}
.smaller{
font-size: 10px;
color: yellow;
}
</style>
</head>
<body>
<div id="div1">这是一个文本;这是一个文本;这是一个文本;这是一个文本;</div>
<input type="button" onclick="change('bigger')" value="变大"> //此处onclick为调用函数,并非定义函数,所以不用function关键字
<input type="button" onclick="change('smaller')" value="变小"> <script>
function change(a) {
var ele=document.getElementById("div1");
ele.classList.add(a); //因为add后面括号中加的是字符串,所以上面的函数括号中参数也要传字符串,由于双引产生混淆,所以用单引
}
</script>

Python:Day46 Javascript DOM的更多相关文章

  1. Python:Day44 Javascript

    一个完整的Javascript实现是由三个不同的部分组成: 1.核心 ECMA Javascript 2.浏览器对象模型(DOM) document object model (整合JS.html.C ...

  2. Python:Day45 Javascript的String字符串

    typeof只能判断普通数据类型, 对于复杂的只是判断出来是一个Object: instanceof 可以判断数据是否是某一类型: alert(s instanceof String); String ...

  3. JavaScript DOM实战:创建和克隆元素

    DOM来创建和克隆元素. createElement()和createTextNode() createElement()和createTextNode()做的事情正如它们的名字所说的那样.最常见的J ...

  4. Python 15 html 基础 - CSS &javascript &DOM

    本节内容 CSS基础 javascript基础 DOM 前言,这边这块楼主已经很熟悉了,CSS天天用到,简单的一些javascript也是所以就挑点重点说了.然后就是dom不怎么用,但是其实也用不到, ...

  5. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  6. JavaScript DOM编程艺术第一章:JavaScript简史

    本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助, ...

  7. 前端基础:JavaScript DOM对象

    JavaScript DOM对象 通过HTML DOM,可以访问JavaScript HTML文档的所有元素. 一.HTML DOM(文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(D ...

  8. Python-Day15 JavaScript/DOM

    JavaScript JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. ...

  9. 【Python全栈-JavaScript】JavaScript入门

    JavaScript基础知识点 一.JavaScript概述 参考:http://www.w3school.com.cn/b.asp JavaScript的历史 1.1992年Nombas开发出C-m ...

随机推荐

  1. Async/Await是这样简化JavaScript代码的

    译者按: 在Async/Await替代Promise的6个理由中,我们比较了两种不同的异步编程方法:Async/Await和Promise,这篇博客将通过示例代码介绍Async/Await是如何简化J ...

  2. jquery网页日历显示控件calendar3.1使用详解

    关于日历插件,我做了好多次尝试,一直致力于开发一款简单易用的日历控件.我的想法是争取在引用这个控件后,用一行js代码就能做出一个日历,若在加点参数,就能自定义外观和功能丰富多彩的日历.Calendar ...

  3. 如何用JavaScript判断dom是否有存在某class的值?

    例如: <html class="no-js"> <head> </head> <body> </body> </ ...

  4. 个人练习:使用HTML+CSS制作二级菜单

    最近一直在学习HTML+CSS,刚看完如果制作下拉菜单部分,就想着做一个练练手. 先上成品图: 就是上面这个效果,横向菜单选项能点击,鼠标放在上面也能展开二级菜单,二级菜单也能点击,点击后就会在底下的 ...

  5. html/css更改子级继承的父级属性

    一个精美的网页需要的样式很多,在父级上设置的字体颜色或者大小,在其子元素中不一定全部相同,这时候要更改其中某一项的样式怎么办呢. 很多新手朋友就不明白,会迷惑为什么我使用class单独命名了,重新设置 ...

  6. 广州.net俱乐部12月份ABP框架活动场地征集、志愿者征集、合作讲师\副讲师征集

    大家好,我在<被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾>一文中提到,我将在12月份搞一场ABP框架活动,现向大家征集活动场地.志愿者.合作讲师\副讲 ...

  7. 26.Odoo产品分析 (三) – 人力资源板块(6) – 工资表(2)

    查看Odoo产品分析系列--目录 接上一篇Odoo产品分析 (三) – 人力资源板块(6) – 工资表(1) 4. 缴纳登记册 在"缴纳登记册"菜单中可以查看所有的登记册并新建:  ...

  8. 转载------35岁开始转变的观念(干了这碗鸡汤再写代码保证没有bug)

    作为一个标准的IT男,从一开始的一线开发,做到管理层,又因为喜爱开发,跳槽继续专注coding,一干就是10多年.有时候就想,这样一直学习,coding,如果能干到老也挺不错的! 不过生活的压力是不会 ...

  9. Python3.6 下 安装MySql

    https://pypi.python.org/pypi/mysqlclient/1.3.10 该网页下下载 Python-3.5及上版本的扩展的mysql驱动. 下载的是一个.whl文件,下载目录为 ...

  10. 腾讯云 Game-Tech 技术沙龙小游戏专场“空降”长沙

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 小游戏作为今年快速成长的新生态,在开放进入市场之后持续成为行业热点,获得了游戏开发商的高度关注与参与.在 ...