前端——DOM

什么是DOM?

DOM是W3C(万维网联盟)的标准,是Document Object Model(文档对象模型)的缩写,它定义了访问HTML和XML文档的标准:

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

DOM标准被分为三个不同的部分:

  • 核心 DOM       - 针对任何结构化文档的标准模型
  • XML DOM       - 针对XML文档的标准模型
  • HTML DOM     - 针对HTML文档的标准模型
什么是HTML DOM?
  • HTML 的标准对象模型
  • HTML 的标准编程接口
  • W3C 标准

HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法。将整个HTML当做一个对象,对象嵌套一个对象,每个标签都认为是一个对象。

换言之,HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。我们最为关心的是,DOM把网页和脚本以及其他编程语言联系了起来。

查找标签

1.直接查找

document.getElementById()            根据ID获取标签(单个标签)
document.getElementsByName()         根据name属性获取标签(列表)
document.getElementsByClassName()    根据class属性获取标签(列表)
document.getElementsByTagName()      根据标签类型获取标签(列表)
document.querySelector()             允许通过CSS选择器的规则来查找标签(符合条件的第一个)
document.querySelectorAll()          所有符合条件的(列表)

 示例:

// 根据id查找标签,tag是一个DOM对象
var tag = document.getElementById("i1");

2.间接查找

间接查找是建立在直接查找的结果基础之上的操作

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

操作标签

1.基本操作

console.log()               输出框
alert("")                   弹出框
confirm("")                 确认框
  
// URL和刷新
location.href               获取当前URL
location.href = "url"       设置URL(重定向,跳转)
location.reload() 或 location.href = location.href       重新加载(刷新页面)
  
// 定时器
setInterval                 多次定时器
clearInterval               清除多次定时器
setTimeout                  单次定时器
clearTimeout                清除单次定时器

2.文本内容操作

.innerText         获取标签文本内容
.innerText=" "     对文本内容重新赋值
.inerHTML          获取标签全部内容
.innerHTML=" "     设置标签全部内容
.value            (只对部分标签生效)获取input中(所有使用value)的值、select标签选中的值,textarea标签中的值
.value=" "         设置值
.checked           获取单(复)选框中的值,input标签中类型checked,radio的专属
.checked=" "       设置值,true 或 false 

示例:

<body>
    <div>div内容</div>
    <p>p标签内容</p>
    <input id="a1" type="button" value="按钮">
    <input id="a2" type="text">
    <input id="a3" type="password">
    <select id="a4" name="city">
        <option value="1">北京</option>
        <option value="2">上海</option>
        <option value="3">天津</option>
    </select>
    <textarea>这里是默认文本</textarea>
    <span>
        篮球<input type="checkbox" name="favor" value="1">
        足球<input type="checkbox" name="favor" value="2">
        台球<input type="checkbox" name="favor" value="3">
        羽毛球<input type="checkbox" name="favor" value="4">
        单选框:<input type="radio" name="1"> <input type="radio" name="1">
    </span>

    <script>
        function func(){
            var tag1 = document.getElementsByTagName("div"); // tag1是列表,tag1[0]才是div标签对象
            tag1[0].innerText = "修改后的div内容";
            var tag2 = document.getElementsByTagName("p");
            tag2[0].innerHTML = "<a href='https://www.baidu.com'>修改后的p标签内容</a>";
            var tag3 = document.getElementById("a1");
            tag3.value = "修改后按钮名称";
            var tag4 = document.getElementById("a2");
            tag4.value = "修改输入框内容";
            var tag5 = document.getElementById("a3");
            tag5.value = "同样也可以修改密码的输入,也可以从控制台获取";
            var tag6 = document.getElementById("a4");
            tag6.value = 3; // 选择"天津"
            var tag7 = document.getElementsByTagName("textarea")[0];
            tag7.value = "修改后的默认文本";
            var tag8 = document.getElementsByTagName("span")[0];
            tag8.children[0].checked = true;
            tag8.children[2].checked = true;
            tag8.children[5].checked = true;
        }
        setTimeout(func,2000); // 定时器,2秒后执行函数
    </script>
</body>

3.样式操作

// 类的操作
.className                     获取所有使用的类
.className="样式"              设置样式(会覆盖之前的,处理方法与.cssText相同)
.classList.add("样式")         增添样式集合
.classList.remove("样式")      删除样式
.className.indexOf("样式")     判断是否具有某样式,有则返回下标,没有返回-1
// 获取CSS样式
.style.属性             获取样式,但是只能获得内联样式表中定义的属性(写在<style>标签和<link>引入的都无法获取)
window.getComputedStyle()     获取元素计算之后的样式属性值,即当前元素最终使用的所有CSS属性值。只读的返回值
       语法:window.getComputedStyle(element,"伪元素").width 如果不需要获取伪元素,第二个参数省略,默认null

// 设置CSS样式
.style.属性 = "值";           对具体样式进行操作         例如:.style.color = "red"; 
.style.cssText = "";          可以一次性设置多个样式。    例:.style.cssText = "width:180px;color:white;height:40px;"

 有了.cssText可以一步完成,但是会带来一个问题,会把原来有的样式清除掉,例如原来有的css中有style“display:none;”,在执行完上面的js操作后,display会被删掉,解决办法:
.style.cssText += ";width:180px;color:white;height:40px;" 

4.属性操作

.attributes   获取所有属性
.setAttribute("属性名","值")    设置属性   
.removeAttribute("属性名")       删除属性
.getAttribute("属性名")         获取某属性的值

/*
var atr = document.createAttribute("class");
atr.nodeValue="democlass";
document.getElementById('n1').setAttributeNode(atr);
*/

5.标签操作

1.创建标签
  • 字符串的方式创建标签
var tag = "<a class='c1' href='http://www.baidu.com'>你好</a>";
  • 对象的方式创建标签
var tag = document.createElement("input");
tag.style.color = "red"; 
…… ……   // 可以设置样式、属性等
2.插入标签

创建标签后,需要将其插入我们想要的位置

// 方式一
document.getElementById("i1").insertAdjacentHTML("beforeEnd",tag);// 将其插入id="i1"标签的内部最后一个
// 方式二
document.getElementById("i1").appendChild(tag);  // 将标签添加到"i1"标签内,默认插入位置是内部最后一个

insertAdjacentHTML()方法的第一个参数只能是:"beforeBegin","afterBegin","beforeEnd","afterEnd",分别表示将新标签添加到对照标签的: 前面,内部第一个,内部最后一个,后面。

3.删除标签

原生API要删除标签,必须要获得它本身和父标签。

var tag1 = document.getElementById("p1");
var tag2 = document.getElementById("p2");
tag1.removeChild(tag2); // 删除标签

这样比较麻烦,常用的办法是这样:

tag.parentElement.removeChild(tag);

6.提交表单

在HTML中input标签 submit 类型可以提交,但是通过DOM操作可以将任何标签具有此功能。

.submit() 方法
将目标标签加入oncilck事件,触发函数,函数中使用.submit()方法

 示例:

<form id="f1" action="http://www.baidu.com">
    <input type="text">
    <a id="a1">提交</a>
</form>
<script>
    document.getElementById("a1").onclick = submitFrom; // 绑定事件
    function submitFrom(){
        document.getElementById("f1").submit();
    }
</script>

事件

要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素相应的事件绑定处理函数。

 

示例:

// 鼠标移入移出显示不同效果,可以用CSS hover实现
<body> <table id="text" border = "1"> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>1</td><td>2</td><td>3</td></tr> </table> <script> var tag = document.getElementsByTagName("tr"); var len = tag.length; for(var i=0;i<len;i++) { tag[i].onmouseover = function(){ //tag[i].style.backgroundColor = "red"; //会报错,要将tag[i]换成this:谁调用这个函数,this就指向谁、 // 作用域的问题 this.style.backgroundColor = "red"; } tag[i].onmouseout = function(){ this.style.backgroundColor = ""; } } </script> </body>
// 输入框默认显示提示信息,点击消失。 标签中placeholder属性可以实现类似效果,不同的是:点击不消失,输入字符时才消失。
<body> <div> <input οnfοcus="Focus();" οnblur="Blur();" id="i1" type="text" value="请输入关键字"> </div> <script> function Focus(){ var tag = document.getElementById("i1"); if(tag.value == "请输入关键字") { tag.value= ""; } } function Blur(){ var tag = document.getElementById("i1"); if(tag.value.length == 0) { tag.value = "请输入关键字"; } } </script> </body>

 绑定事件:

在JavaScript和DOM的知识背景下有三种绑定事件的方式:

1.在HTML标签中直接绑定(不建议)

初学者使用的方法,为简化html代码,不建议使用。

<div οnclick="click(this)"> // 一般函数不需要传入参数,如果多个标签绑定同一函数,为了区分用户点击的是哪个标签,需要传入this
function click(self){
    // self 代指当前点击的标签
}
2.先获取DOM对象,再进行绑定

可使JavaScript代码与HTML相分离,文档结构清晰,便于管理和开发。

// 绑定函数
document.getElementById("i1").onclick = function(){
    this 代指当前点击的标签
}
// 解除函数
document.getElementById("i1").onclick = null; 
3.绑定/解除事件监听函数

可以对一个事件绑定多个函数

a. addEventListener()方法(推荐
// 绑定事件监听函数 addEventListener()
document.getElementById("i1").addEventListener("click",function(){},false);
document.getElementById("i1").addEventListener("click",handle,false);
参数:事件名称,执行函数,执行模式。
关于执行模式:默认false表示冒泡阶段执行,true表示捕捉阶段执行。

// 解除事件监听函数 removeEventListener()
参数与上相同。需要注意
1.该方法只能移除由addEventListener()方法添加的函数
2.匿名函数无法移除
b, attachEvent()方法

attachEvent("事件名称","执行函数")

 

转载于:https://www.cnblogs.com/V587Chinese/p/9462299.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值