BOM和DOM模型以及操作

BOM模型window对象

1.概念

BOM浏览器对象模型:规范浏览器对js语言支持

BOM的具体的实现:window对象

###1.window对象不能new,直接调用使用即可

###2.框体方法

​ alert comfirm proompt

3.定时和间隔执行方法

1.setTimeOut(函数对象,时间(毫秒)):指定的时候后执行指定的函数

返回的是当前定时器的ID

clearTimeOut(定时器的ID):用来停止指定的定时器

2.setInterval(函数对象,时间(毫秒)):每间隔指定的时间,执行指定的函数。

​ 怎么停:关闭浏览器。

ckearInterval(间隔器的ID):停止指定的间隔器


2.定时器和间隔器

<body>
    <input type="button" value="test定时执行" onclick="testSetTimeOut()">
    <input type="button" value="test间隔执行" onclick="testSetInterval()">
    <input type="button" value="test停止定时执行" onclick="testClearSetTimeOut()">
    <input type="button" value="test停止间隔执行" onclick="testClearSetInterval()">
</body>
<script>
    var ids,idi;
    function testSetTimeOut(){
        ids=setTimeout(function(){
            alert("我是定时器");
        },1000);
    }
    function testSetInterval(){
        idi=setInterval(() => {
            alert("我是间隔器");
        }, 3000);
    }
    function testClearSetTimeOut(){
        clearTimeout(ids);
    }
    function testClearSetInterval(){
        clearInterval(idi);
    }
</script>

DOM模型

1.概念

DOM全称:Document Object Model 文档对象模型

把文档中的标签,属性,文本转化成对象模型

2.Document对象中的方法

1.直接获取元素的对象

方法名方法作用返回值是否为数组
document.getElementById(id)通过id获取dom节点对象
document.getElementsByName(name)通过name属性获取dom节点对象
document.getElementsByTagName(标签名)通过标签名获取dom节点对象
document.getElementsByClassName(类名)通过类名获取dom节点对象
document.createElement(标签名)通过标签名创建dom节点对象

ps:对于document三种查询方法,如果有id属性,优先使用getElementById这个方法,如果没有id属性,getElementsByName方法来进行查询,如果id属性和name属性都没有,使用getElementsByTagName.上面的查询必须是在页面加载完成后才能执行


2.简介获取元素的对象

1.父子关系

​ 1.获取父级元素的对象

​ 直接获取

​ 2.根据父元素的对象获取子元素对象

​ childNodes

2.子父关系

​ 1.获取子级元素的对象

​ 2.根据子元素的对象获取父元素对象

​ parentNode

3.兄弟关系

​ 1.根据兄获取弟

​ nextSibling

​ 2.根据弟获取兄

​ previousSibling


3.案例

<body>
    <h2>直接方式</h2>
    <input type="button" value="测试获取元素对象---id" onclick="testElementById()">
    <input type="button" value="测试获取元素对象---name" onclick="testElementByName()">
    <input type="button" value="测试获取元素对象---tagName" onclick="testElementByTagName()">
    <input type="button" value="测试获取元素对象---className">




    用户名:<input type="text" name="uname" id="uname">
    <input type="checkbox" name="fav" id="">
    <input type="checkbox" name="fav" id="">
    <input type="checkbox" name="fav" id="">


    <h2>间接方式</h2>
    <input type="button" value="测试父子关系" onclick="testParent()">
    <input type="button" value="测试兄弟关系" onclick="testBroth()">

    <div id="showdiv">
        <span id="span1"></span>
        <span id="span2"></span>
        <span id="span3"></span>
    </div>
</body>
<script>
    //直接方式
    function testElementById(){
        var inp=document.getElementById("uname");
        alert(inp.toString());
    }
    function testElementByName(){
        var favs=document.getElementsByName("fav");
        for(var i in favs){
            console.log(favs[i]);
        }
    }
    function testElementByTagName(){
        var inputs=document.getElementsByTagName("input");
        for(var i in inputs){
            console.log(inputs[i]);
        }
    }
    //间接方式
    function testParent(){
        //父子关系
        //获取父级元素对象
        console.log("根据父获取子元素");
        var showdiv=document.getElementById("showdiv");
        //获取所有的子元素对象
        var childs=showdiv.childNodes;
        for(var i=0;i<childs.length;i++){
            console.log(childs[i]);
        }
        console.log("根据子元素获取父元素");
        var child=document.getElementById("span1");
        var div=child.parentNode;
        console.log(div);
    }
    function testBroth(){
        var span=document.getElementById("span2");
        var prespan=span.previousSibling;//获取兄元素
        var nextspan=span.nextSibling;//获取弟
        console.log("弟获取兄");
        for(var i in prespan){
            console.log(prespan[i]);
        }
        console.log("兄获取弟");
        for(var j in nextspan){
            console.log(nextspan[j]);
        }
    }
</script>

操作元素的属性

1.获取属性值
元素的对象.属性名----返回当前属性的值----固有
元素的对象.getAttrubute("属性名")//返回的是自定义属性的值----自定义属性
2.修改属性值
元素的对象.属性名=值
元素的对象.setAttraibute("属性名","属性值")----自定义属性

1.尽量不要修改元素的id属性和name属性

2.使用自定义方式获取固有属性时,value的值获取的默认值,不能获取用户实时输入的值


4.操作元素内容

1.获取元素的内容

元素的对象.innerHTML:返回的是对象所有的内容包括HTML标签

元素的对象.innerText:返回的是对象所有的内容包括不HTML标签

2.修改元素内容

元素对象名.innerHTML=“新的值” 会将所有的内容覆盖,并解析HTML标签

元素对象名.innerHTML=元素对象名.innerHTML+”新的值“

元素对象名.innerText=“新的值” 会将所有的内容覆盖,并不解析HTML标签

元素对象名.innerText=元素对象名.innerText+"新的值"

5.案例

<body>
    <div id="div">
        <p>北京</p>
        <p>上海</p>
        <p>深圳</p>
    </div>
    <input type="button" value="测试获取元素内容" onclick="get()">
    <input type="button" value="修改获取元素内容" onclick="set()">
</body>
<script>
    function get(){
        var div=document.getElementById("div");
        console.log("innerHTML"+div.innerHTML);
        console.log("innerText"+div.innerText);
    }
    function set(){
        var div=document.getElementById("div");
        div.innerHTML+="<p>挪威</p>"
        div.innerText+="<p>庄园</p>"
    }
</script>

6.操作元素的样式

1.通过style属性

​ 元素的对象.style.样式名=”值“ //添加或者修改样式

​ 元素的对象.style.样式名=”“;//删除样式

ps:上面的操作是HTML的属性声明中的样式

2.通过className

​ 对象名.className=“新的值”;//添加类选择器样式或者修改类选择器样式

​ 对象名.className="";//删除类样式

7.案例

<style>
    #div01{
        border: 1px solid green;
    }
    .commom{
        width: 200px;
        height: 200px;
        background-color: cadetblue;
    }
</style>
<body>
    <input type="button" value="修改样式" onclick="modify()">
    <input type="button" value="修改类" onclick="change()">
    <div id="div01"></div>
    <div id="div02"></div>
</body>
<script>
      //修改style
    function modify(){
        var div=document.getElementById("div01");
        div.style.width="200px";
        div.style.height="200px";
    }
		//修改class
    function change(){
        var div=document.getElementById("div02");
        div.className="commom";
    }

</script>

8.操作文档结构

1.innerHTML操作文档内容

innerHTML操作文档内容

2.父节点操作

​ 1.父节点.appendChild(子节点对象) //往父节点追加子节点

​ 2.父节点.removeChild(子节点对象) //删除指定的子节点

<body>
    <input type="button" value="继续上传" onclick="testAdd()">
    <div id="showdiv">
        <input type="file" name="" id="">
        <input type="button" value="删除" onclick="del(this)">
    </div>
</body>
<script>
    //添加子元素
    function testAdd(){
        var showdiv=document.getElementById("showdiv");
        showdiv.innerHTML=showdiv.innerHTML+'<div><input type="file" name="" id=""><input type="button" value="删除" οnclick="del(this)"></div>';
    }
    //删除子元素
    function del(btn){
        var showdiv=document.getElementById("showdiv");
        var cdiv=btn.parentElement;
        showdiv.removeChild(cdiv);
    }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值