DOM(document、api、事件)

对标签进行增删改查操作或修改css,借助js实现动态页面

基本操作:

1、doucument对象:(DOM的核心,基本上大多数DOM API由该对象提供)

基础api:

  • 获取body标签
  • 获取html标签
  • 获取页面上的标题
  • 获取页面上地址
  • 获取页面上的所有图片
  • 获取页面上所有表单
  • 1、获取body标签
    var body = document.body;
    2、获取html标签
    var html =document.documentElement;
    3、获取页面上的标题
    var title=document.title;
    4、获取页面地址
    var url =document.URL;
    5、获取页面上的所有图片
    var imgs=document.images;
    6、获取页面上的所有表单
    var forms=documet.forms;

2、获取修改html元素的内容/属性

        内容:

  •         value属性
  • 1、先获取html标签
    var 标签变量名=document.querySelector('input');
    2、获取HTML内容
    标签变量名.value;
    
    3、修改
    标签变量名.value=新内容;
    eg:
    获取input标签内容
    var input =document.querySelector("demo"); // 有个demo的id标签
    获取内容
    var text =input.value;
    console.log(text);
    
  • innerText(获取标签内容,一般针对于双标签)

  • 1、先获取html标签
    var 标签变量名 =document.querySelector("#box p");
    2、获取html标签的内容
    标签变量名.innerText;
    3、修改
    标签变量名.innerText=新内容;
  • innerHTML(获取标签里的html代码,一般针对于双标签)
  • 1、先获取html标签
    var 标签变量名 =document.querySelector("#box p");
    2、获取html标签的内容
    标签变量名.innerHTML;
    3、修改
    标签变量名.innerHTML=新内容;
  • innerHTML、innerText、value区别

        1、innerHTML和innerText都是针对双标签

        2、innerHTML是改变的标签内部的HTML代码,而innerText改变的是标签内部的文本

        3、value针对带有value属性的标签,比如input

获取html标签(querySid、class、标签名、elector/querySelectorAll)

  • 通过id:
var 变量名=document.getElementBiId("标签的id属性值");
  • 通过class(获取的是一个数组)
  • var 变量名=document.getElementsByClassNanme("标签的class属性值");
    
    eg:
    var elems=document.getElementsByClassNmae("btn");
    获取第一个标签:elems[0];
    获取第二个标签:elems[1];
    获取最后个标签:elems[elems.length-1];
  • 通过标签名(获取的是一个数组)
  • var 变量名=document.getElementsByTagNanme("标签名");
    
    eg:获取页面所有的div
    var divs=document.getElementsByTagNmae("div");
  • 通过querSelector/querySelectorAll(匹配一个html标签/所有html标签):通过css选择器查找标签(querySecectorAll返回是一个数组)
  • var 变量名=document.querySelector("标签的class选择器");
    
    eg:获取id为box下的第一个p标签
    var ps=document.querySelector("#box p");
    获取所有p标签
    var pss=document.querSelectorAll("#box p");

事件

事件三要素:

1、事件源(被触发的对象)

2、事件类型(如何触发)

3、事件处理程序(函数赋值方式运行)

执行事件步骤:

1、获取事件源

2、注册事件(绑定事件)

3、添加事件处理程序(采取函数赋值方式)

点击事件:(onclick)

当用户点击某个按钮的时候,执行指定的js代码

1、在标签上书写onclick="js代码";所有标签都可以添加
<div onclick ='alert(123)'>点击我</div>

eg:<button onclick="demo()">登录</button>//html代码
    function demo() {       //js代码
    console.log("被点击了");
}

2、在js中书写代码
标签变量名.onclick=function() {
当该标签被点击时要执行的代码 
}

eg:<button id="reg-btn">登录</button>//html代码
var button =document.querySelector('#reg-btn');//js代码
button.onclick =function() {
console.log('button被点击了');
}

属性(自定义)

获取(标签属性):

1、先获取标签
标签变量名.getAttribute("属性名");

eg:
<img src="img/id1.jpg" id="img">

js:
var img=document.querySelector("#img");
var src =img.getAttribute("src");
document.write(src);//输出img/id1.jpg

设置(修改属性): 先获取再设置

标签变量名:setAttribute("属性名",“属性值");


eg:修改地址为img/id2.jpg
<img src="img/id1.jpg" id="img">
js:
var img=document.querySelector("#img");
img.setAttribute("src","img/id2.jpg");

移除属性:removeAttribute

eg:div.removeAttribute("id");

 添加或删除HTML元素(节点)

节点:元素节点1  属性节点2  文本节点3

添加:

api:

document.parentNode (获取父级标签)

document.childNodes(获取自己所有子元素和节点)

documen.children(获取自己所有子元素和节点)  常用

document.firestChild(获取第一个子节点)ie兼容问题

document.lastchild(获取最后一个子节点)ie兼容问题

 获取兄弟标签:

标签.perviousElementSibling:上一个兄弟标签

标签.nextElementSibling:下一个兄弟标签

标签变量名.nextElementSibling;
标签变量名.previousElmentSibling;

eg:
html:
 <div>
        <button onclick="sub(this)">-</button>
        年龄:<input type="text" value="1" id="demo1"/>
        <button onclick="add(this)">+</button>
    </div>
    <div>
        <button onclick="sub(this)">-</button>
        年龄:<input type="text" value="1" id="demo2"/>
        <button onclick="add(this)">+</button>
    </div>
js:
 // 减少
        function sub(aa) {
            var input =aa.nextElementSibling;
                input.value--;
        }
        // 增加
        function add(bb) {
            var input =bb.previousElementSibling;
            input.value++;
        }

创建节点:(动态创建元素节点)

document.createElement(创建标签)

var 变量名 =document.createElement("标签名");
var newDiv =document.createElement("div");//添加一个div标签

父标签.appendChild(添加标签):讲某个标签追加到页面中,作为父标签的最后一个子标签,保证父标签的页面上已存在标签 (先创建后添加) 后面添加

父标签.insertBefore(新标签名,指定元素-兄弟标签):将某个标签追加到页面上,并作为其父标签的子标签并放在指定兄弟标签之前(先创建后添加) 前面添加

父标签变量名.appendChild(新标签变量名);
eg:把新建的div标签作为body的最后一个子标签放在页面上
var newDiv =document.createElement("div");
document.body.appendChild(newDiv);
父标签变量名.insertBfore(新标签变量名,兄弟标签变量名);

eg:将新建的p标签放入id为box的div标签中,作为其第一个子标签

<div id="box">
<p>这是第一个子标签</p>
</div>
js:
var newp =document.createElement("p");
newP.innerText = "我才是第一个p标签";
var father = document.querySelector("#box");
var brother=document.querySelector("#box p");
father.insertBefore(newP,brother);

删除:

api:

父节点.removeChild()//先获取待删除的标签,再执行删除

父标签名.removeChild(待删除的子标签);

eg:删除div里面的标签
<div id="box">
<p>这是一个div</p>
</div>
js:
var father=document.querySelector("#box");
var p=querSelector("#box p");
father.removeChild(p);

批量删除:1、获取所有待删除的标签

                   2、对待删除的进行for遍历,依次调用删除

复制节点

父标签.cloneNode()  括号里面是空或者是false是浅拷贝 只复制标签不复制内容

var ul=document.querySelector("ul");
括号里面是空或者是false是浅拷贝 只复制标签不复制内容
括号里面是空或者是true是深拷贝 复制标签和复制内容
var lili=ul.children[0].cloneNode(true);
ul.appendchild(lili);

修改css

获取css样式:getComputedStyle(js内置函数,能够获取某个标签的所有最终使用样式)

getComputedStyle(标签名,null);
eg:获取div所使用的with,height
html:
<div id="box"></div>

js;
var div=document.querySelector("#box");
//获取所有样式
var style=getComputedStyle(div,null);
//获取width,和height
console.log(style.width,style.height);

该函数会返回一个对象,需要我们定义变量接收后使用。该对象包含了该标签的所有样式,可以通过对象变量名,css属性来获取某个css属性

设置:标签变量名.style.css属性名=css属性值

eg:改变背景颜色为红色
<div></div>
js:
var div=documnet.querySelector("div");
div.style.backgroundColor="red";

注: js会将设置的css样式作为嵌入样式放在标签的style属性中,这样可以保证css样式优先级最高

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值