js操作元素

214 阅读2分钟

操作元素内容

元素内容指开始标签与结束标签之间的内容,单标签没有元素内容,表单标签除外。

操作闭合标签内容

闭合标签(双标签)的内容需要设置或修改,使用闭合标签的innerHTML属性。

innerHTML与innerText都可以操作标签内容,但innerHTML能识别标签,innerText不能被解析,所以innerText获取元素的纯文本内容。

语法:

1.设置标签的内容:标签.innerHTML = “内容”;

2.获取标签的内容:var text = 标签.innerHTML;

3.innerHTML和innerText会把节点元素中开始标签与结束标签之间的内容(内部所有的子级元素)全部替换。即会覆盖原本的内容。

4.如果想保留之前内容的,既:之前+现在。解决方案:1.标签.innerHTML = 标签.innerHTML+"内容";或者标签.innerHTML += "内容";2.创建一个元素,把现在的内容作为创建元素的innerHTML,然后把这个创建的元素添加到有之前内容的元素中。

    <div class="box-baba">
        <div class="box-son"></div>
    </div>
    <div class="box1">
        <a href="#">hello,world!</a>
    </div>
    <script>
        let box1=document.querySelector(".box1");
        let boxfather=document.querySelector(".box-baba");
        box1.innerText="777";
        boxfather.innerHTML="<h1>666</h1>";
        boxfather.innerHTML+="<h2>777</h2>"
    </script>

image.png

操作表单元素内容

操作表单元素用的是表单的value属性。

语法:

1.设置表单元素的内容:表单元素.value = “值”;

2.获取表单元素的内容:var a = 表单元素.value;

    输入密码:<input type="password" class="pwd">
    获取密码:<input type="text" class="text">
    <button class="btn">点击获取密码</button>
    <script>
        let btn=document.querySelector(".btn");
        btn.onclick=function(){
            let pwd=document.querySelector(".pwd");
            let text=document.querySelector(".text");
            let inputpwd=pwd.value;
            console.log(inputpwd);
            text.value=inputpwd;
        };
    </script>

点击按钮即可获取密码框里的内容,然后将输入的内容填充在密码框旁的文本框中。

ps:事件的绑定只能绑定在元素上,不能绑在元素的集合上。

image.png

操作元素属性

语法:

1.元素.属性名 = “属性值”;

2.class是个保留字,因此使用className来操作类名属性。classList是类名的列表,它使用两个函数来操作类名属性。add用于添加节点对象的类名,remove用于移除节点对象的类名。

3.className用于添加节点元素单个类名,classList用于添加节点元素多个类名,当添加相同的类名只会添加一个

    <div></div>
    <img src="./image/mmexport1646053900038.jpg" alt="">
    <button id="btn">change元素属性</button>
    <script>
        let btn=document.querySelector("#btn");
        btn.onclick=function(){
            let img=document.querySelector("img");
            img.src="./image/img-a30d63eab9eab3fc6c02db6696786196.jpg";
            let a1=document.querySelector("div");
            a1.id="divbox";
        };
    </script>

点击按钮之前

image.png

点击按钮之后

image.png

    <div id="box1"></div>
    <script>
        //获取DOM树中的元素
        let box1=document.querySelector("#box1");
        // box1.className="box2 box3";
        // box1.className="box2";
        // box1.className=box1.className+" box3";//此处box3前必须敲一个空格否则最后只添加了一个类名为box2box3
        box1.classList.add("box2");
        box1.classList.add("box2");
        box1.classList.add("box3");
     </script>

box1.className="box2 box3";等价于box1.className="box2";加上box1.className=box1.className+" box3";也等价于 box1.classList.add("box2");加上box1.classList.add("box3");

image.png

    <div id="box1"></div>
    <div id="div-box"></div>
    <script>
        let box=document.querySelector("#div-box");
        box.classList.add(box2);
        box.classList.add(box3);
        box.classList.remove(box2);
     </script>

image.png

操作元素样式

通过js可以修改元素的大小、颜色、位置等样式和cssText属性可以同时设置元素的多个行内样式。

ps:只有元素才能操作样式,元素集合不能操作样式。

语法:

1.元素.style.样式名 = “样式值”;

2.元素.style.cssText = "width:100px; height:100px;background:#ccc"

3.js里面的样式采取驼峰命名法代替CSS中的横线-,比如 fontSize和backgroundColor

4.js修改style样式操作时产生的是行内样式,css权重比较高。

    <div class="box1">
        <div class="box2"></div>
    </div>
    <script>
        let box1=document.getElementsByClassName("box1");
        let box2=document.getElementsByClassName("box2");
        console.log(box1)
        box1[0].style.backgroundColor="red";
        box1[0].style.width="600px";
        box1[0].style.height="500px";
        box2[0].style.cssText="width:400px;height:300px;background:blue";
    </script>

image.png