JavaScript DOM、BOM操作

js HTML DOM

简介:

HTML DOM(文档对象模型)

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

HTML DOM 模型被结构化为对象树

对象的 HTML DOM 树

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66Z91IwX-1607906799173)(C:\Users\yijiu\AppData\Local\Temp\1606048383137.png)]

通过这个对象模型,JavaScript 获得创建动态 HTML 的所有力量:

  • JavaScript 能改变页面中的所有 HTML 元素
  • JavaScript 能改变页面中的所有 HTML 属性
  • JavaScript 能改变页面中的所有 CSS 样式
  • JavaScript 能删除已有的 HTML 元素和属性
  • JavaScript 能添加新的 HTML 元素和属性
  • JavaScript 能对页面中所有已有的 HTML 事件作出反应
  • JavaScript 能在页面中创建新的 HTML 事件

方法:

<html>
<body>
<p id="p"></p>
<script>
document.getElementById("p").innerHTML = "Hello World!";//将p标签内添加内容
</script>
</body>
</html>

getElementById 方法:

访问 HTML 元素最常用的方法是使用元素的 id。

在上面的例子中,getElementById 方法使用 id=“demo” 来查找元素。

innerHTML 属性:

获取元素内容最简单的方法是使用 innerHTML 属性。

innerHTML 属性可用于获取或替换 HTML 元素的内容。

innerHTML 属性可用于获取或改变任何 HTML 元素,包括 和 。

元素:

查找 HTML 元素:

方法 描述
document.getElementById(id) 通过元素 id 来查找元素
document.getElementsByTagName(name) 通过标签名来查找元素
document.getElementsByClassName(name) 通过类名来查找元素

改变 HTML 元素:

方法 描述
element.innerHTML = new html content 改变元素的 inner HTML
element.attribute = new value 改变 HTML 元素的属性值
element.setAttribute(attribute, value) 改变 HTML 元素的属性值
element.style.property = new style 改变 HTML 元素的样式

改变 HTML 元素

方法 描述
element.innerHTML = new html content 改变元素的 inner HTML
element.attribute = new value 改变 HTML 元素的属性值
element.setAttribute(attribute, value) 改变 HTML 元素的属性值
element.style.property = new style 改变 HTML 元素的样式

添加和删除元素

方法 描述
document.createElement(element) 创建 HTML 元素
document.removeChild(element) 删除 HTML 元素
document.appendChild(element) 添加 HTML 元素
document.replaceChild(element) 替换 HTML 元素
document.write(text) 写入 HTML 输出流

添加事件处理程序

方法 描述
document.getElementById(id).onclick = function(){ code} 向 onclick 事件添加事件处理程序

查找 HTML 对象

首个 HTML DOM Level 1 (1998),定义了 11 个 HTML 对象、对象集合和属性。它们在 HTML5 中仍然有效。

后来,在 HTML DOM Level 3,加入了更多对象、集合和属性。

属性 描述 DOM
document.anchors 返回拥有 name 属性的所有 元素。 1
document.applets 返回所有 元素(HTML5 不建议使用) 1
document.baseURI 返回文档的绝对基准 URI 3
document.body 返回 元素 1
document.cookie 返回文档的 cookie 1
document.doctype 返回文档的 doctype 3
document.documentElement 返回 元素 3
document.documentMode 返回浏览器使用的模式 3
document.documentURI 返回文档的 URI 3
document.domain 返回文档服务器的域名 1
document.domConfig 废弃。返回 DOM 配置 3
document.embeds 返回所有 元素 3
document.forms 返回所有 元素 1
document.head 返回 元素 3
document.images 返回所有 元素 1
document.implementation 返回 DOM 实现 3
document.inputEncoding 返回文档的编码(字符集) 3
document.lastModified 返回文档更新的日期和时间 3
document.links 返回拥有 href 属性的所有 和 元素 1
document.readyState 返回文档的(加载)状态 3
document.referrer 返回引用的 URI(链接文档) 1
document.scripts 返回所有

DOM流

<!DOCTYPE html>
<html>
<body>
<script>
document.write(Date());//输出中国时间
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<img id="image" src="1.jpg">//设置图片路径
<script>
document.getElementById("image").src = "2.jpg";//改变图片名称(改变图片)
</script>
</body>
</html> 

CSS样式:

<html>
<body>
<p id="p">Hello World!</p>
<script>
document.getElementById("p").style.color = "blue";//给文字改变颜色
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h1 id="id1">Hello World!</h1>
<button type="button" onclick="document.getElementById('id1').style.color = 'red'">点击我!</button>//给button按钮设置点击事件,在点击之后在改变文字颜色
</body>
</html>

CSS动画:

<!DOCTYPE html>
<html>
<style>
#container {
  width: 400px;
  height: 400px;
  position: relative;
  background: blue;
}
#animate {
  width: 50px;
  height: 50px;
  position: absolute;
  background-color: red;
}
</style>
<body>
<p><button onclick="move()">单击我</button></p> //点击之后让小盒子从左上角滑动到右下角
<div id ="container">
  <div id ="animate"></div>
</div>
<script>
//定义函数move
function move() {
  var elem = document.getElementById("animate");   //获取小盒子
  var pos = 0;//定义pos为0
  var time = setInterval(frame, 5); //定时器 5s时间做完事件
  //定义函数 frame
  function frame() {
    if (pos == 350) {
      clearInterval(time);//如果pos==350时,清除定时器
    } else {
      pos++; 
      elem.style.top = pos + "px"; //设置与上方的距离
      elem.style.left = pos + "px"; //设置与左方的距离
    }
  }
}
</script>
</body>
</html>

DOM事件:

HTML 事件的例子:

  • 当用户点击鼠标时
  • 当网页加载后
  • 当图像加载后
  • 当鼠标移至元素上时
  • 当输入字段被改变时
  • 当 HTML 表单被提交时
  • 当用户敲击按键时
//点击事件
一:
<!DOCTYPE html>
<html>
<body>
<h1 onclick="changeText(this)">点我一下</h1>//点我改变文字
<script>
function changeText(id) {
  id.innerHTML = "我改变了,哈哈哈哈哈!";
}
</script>
</body>
</html>
二:
<!DOCTYPE html>
<html>
<body>
<h1 onclick="this.innerHTML='我改变了,哈哈哈哈哈!'">点我一下</h1>
</body>
</html>
//移入移出事件
<!DOCTYPE html>
<html>
<style>
	div{
     	width:120px;
        height:20px;
        padding:40px;
    	background-color:red;
        color:#fff;
    }
</style>
<body>
<div onmouseover="mOver(this)" onmouseout="mOut(this)">请移入</div>
<script>
function mOver(obj) {
  obj.innerHTML = "请移出"
}
function mOut(obj) {
  obj.innerHTML = "请移入"
}
</script>
</body>
</html>

节点:

//添加节点
<!DOCTYPE html>
<html>
<body>
<div id="div1">
<p id="p1">这是一段文字。</p>
<p id="p2">这是另一段文字。</p>
</div>
<script>
var para = document.createElement("p");
var node = document.createTextNode("这是新的文本。");
para.appendChild(node);
var element = document.getElementById("div1");
element.appendChild(para);
</script>
</body>
</html>
//删除节点
<!DOCTYPE html>
<html>
<body>
<div id="div1">
<p id="p1">这是一段文字。</p>
<p id="p2">这是另一段文字。</p>
</div>
<script>
var parent = document.getElementById("div1");
var child = document.getElementById("p1");
parent.removeChild(child);
</script>
</body>
</html>
//替换节点
<!DOCTYPE html>
<html>
<body>

<div id="div1">
<p id="p1">这是一段文字。</p>
<p id="p2">这是另一段文字。</p>
</div>

<script>
var parent = document.getElementById("div1");
var child = document.getElementById("p1");
var para = document.createElement("p");
var node = document.createTextNode("这是新的文本。");
para.appendChild(node);
parent.replaceChild(para,child);
</script>

</body>
</html>

事件监听:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zoPp0t46-1607906799174)(C:\Users\yijiu\AppData\Local\Temp\1606049678813.png)]

js HTML BOM

js window

Window 对象:

所有浏览器都支持 window 对象。它代表浏览器的窗口。

所有全局 JavaScript 对象,函数和变量自动成为 window 对象的成员。

全局变量是 window 对象的属性。

全局函数是 window 对象的方法。

甚至(HTML DOM 的)document 对象也是 window 对象属性:

window.document.getElementById("box");

等同于:

document.getElementById("box");

窗口尺寸:

两个属性可用用于确定浏览器窗口的尺寸。

这两个属性都以像素返回尺寸:

  • window.innerHeight - 浏览器窗口的内高度(以像素计)
  • window.innerWidth - 浏览器窗口的内宽度(以像素计)

浏览器窗口(浏览器视口)不包括工具栏和滚动条。

对于 Internet Explorer 8, 7, 6, 5:

  • document.documentElement.clientHeight
  • document.documentElement.clientWidth

  • document.body.clientHeight
  • document.body.clientWidth

其他窗口方法:

  • window.open() - 打开新窗口
  • window.close() - 关闭当前窗口
  • window.moveTo() -移动当前窗口
  • window.resizeTo() -重新调整当前窗口

js window location

window.location 对象可不带 window 前缀书写。

  • window.location.href 返回当前页面的 href (URL)
  • window.location.hostname 返回 web 主机的域名
  • window.location.pathname 返回当前页面的路径或文件名
  • window.location.protocol 返回使用的 web 协议(http: 或 https:)
  • window.location.assign 加载新文档

js 弹出框

JavaScript 有三种类型的弹出框:警告框、确认框和提示框。

警告框

如果要确保信息传递给用户,通常会使用警告框。

当警告框弹出时,用户将需要单击“确定”来继续。

语法:

window.alert("sometext");

window.alert() 方法可以不带 window 前缀来写。

实例:

alert("一个警告框!");

确认框

如果您希望用户验证或接受某个东西,则通常使用“确认”框。

当确认框弹出时,用户将不得不单击“确定”或“取消”来继续进行。

如果用户单击“确定”,该框返回 true。如果用户单击“取消”,该框返回 false。

语法:

window.confirm("sometext");

window.confirm() 方法可以不带 window 前缀来编写。

实例:

var r = confirm("取消还是确认?");
if (r == true) {
    x = "确认!";
} else {
    x = "取消!";
}

提示框

如果您希望用户在进入页面前输入值,通常会使用提示框。

当提示框弹出时,用户将不得不输入值后单击“确定”或点击“取消”来继续进行。

如果用户单击“确定”,该框返回输入值。如果用户单击“取消”,该框返回 NULL。

语法

window.prompt("sometext","defaultText");

window.prompt() 方法可以不带 window 前缀来编写。

实例

var person = prompt("请输入您的排名", "第一名");
if (person != null) {
    document.getElementById("demo").innerHTML = "你好 " + person + "!今天天气很好!";
}

折行

如需在弹出框中显示折行,请在反斜杠后面加一个字符 n(\n)

实例

alert("Hello\nHow are you?");

猜你喜欢

转载自blog.csdn.net/blue_698/article/details/111149363