JavaScript 操作元素与节点

操作元素

获取/修改元素样式属性

示例 1

要求:点击修改 p 标签文本的颜色(默认为黑色

步骤

  • 获取元素:querySelector
  • 修改元素的样式 style 属性

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>修改元素属性</title>
</head>
<body>
    <p>我爱你,中国</p>
</body>
<script>
    // 目的:点击后修改p标签文本内容颜色
    // (1) 获取元素
    var p = document.querySelector("p");
    // (2) 绑定点击事件
    p.onclick=function() {
     //获取当前p标签文本颜色(默认黑色)
     var color = p.style.color;
     //修改style属性
    if(color == '' || color == "black") {
        p.style.color = "red";
        p.style.fontSize="2em";
    }else {
        p.style.color = "black";
        p.style.fontSize="1em"
    }
 }


</script>
</html>

示例 2:

要求:点击页面切换白天与夜间模式

步骤

  • 获取元素:querySelector
  • 绑定点击事件

代码实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>切换夜间模式</title>
    <style>
        /* 白天模式:白底黑字 */
        .day {
            
            background-color: white;
            color: black;
        }
        /* 夜间模式:黑底白字 */
        .black {
            width:200px;
            height:100px;
            background-color: black;
            color: white;
        }
    </style>
</head>
<body>
    <p class="day">我是Java小菜鸟~</p>
</body>
<script>
    var p = document.querySelector("p");
    //绑定点击事件
    p.onclick=function() {
        //class 属性,在JavaScript的元素对象属性为className
      var cls = p.className;
      if(cls == "day") {
          p.className = "black";
      }else {
          p.className = "day";
      }

    }
</script>
</html>

白底黑字显示

在这里插入图片描述

黑底白字显示

在这里插入图片描述

获取/修改表单元素属性

表单:(主要是指 input 标签)的以下属性都可以通过 DOM 来修改;
value: input 的值.
disabled: 禁用
checked: 复选框会使用
selected: 下拉框会使用
type: input 的类型(文本, 密码, 按钮, 文件等)

示例 1:切换按钮的文本

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    切换播放/暂停:<input type="button" id="btn" value="播放">
</body>
<script>
   var btn = document.querySelector("#btn");
   btn.onclick = function() {
       var content = btn.value;
       if(content == "播放") {
           //切换显示的内容为暂停
           btn.value = "暂停";
       }else{
           btn.value = "播放";
       }
   }
</script>
</html>

在这里插入图片描述
示例 2:点击计数

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    点击计数:<input type="text" id ="sum" value="0"> 
    <input type="button" id="sum_btn" value="点我加1"> 
</body>
<script>
 var sum=document.querySelector("#sum");
 var sumBtn=document.querySelector("#sum_btn");
 sum_btn.onclick=function() {
     //+会将字符串转成数值
    var count = +sum.value;
    sum.value=count+1;
}
</script>
</html>

在这里插入图片描述

示例 3: 全选/取消全选

代码实现

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    全部取消或选中:
    <input type="checkbox" id="all">全部都选
    <input type="checkbox" class="item">宋江
    <input type="checkbox" class="item">李逵
    <input type="checkbox" class="item">林冲
    <input type="checkbox" class="item">关胜
</body>
<script>
    //全部选中
    var all = document.querySelector("#all");
    // 子复选框:注意是采用querySelectorAll
    var items = document.querySelectorAll(".item");
    all.onclick = function () {
        for (item of items) {
            item.checked = all.checked;
        }
    }

    //当每一个子复选框被选中的时候,all复选框也被选中
    for (item of items) {
        //给每一个都绑定点击事件
        item.onclick = function () {
            let allChecked = true;
            for (it of items) {
                if (!it.checked) allChecked = false;
            }
            all.checked = allChecked;
        }
    }

</script>

</html>

操作节点

新增节点

步骤

  1. 创建元素节点;
  2. 把元素节点插入到 DOM 树中;

(1)创建元素方法createElement

格式

var element = document.createElement(tagName[, options]);

目的实现在文本框输入内容后,将内容显示在段落中

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" id="content"> 
    <input type ="button" id="add" value="添加文本框内容为一个段落"> 
    <div id="container">
        <h3>显示的内容</h3>
    </div>
</body>
<script>
    // 获取文本框内容,添加到container中
    var add=document.querySelector("#add");
    var content=document.querySelector("#content");
    var container =document.querySelector("#container");
       //绑定点击事件
    add.onclick=function() {
        var text=content.value;
        //创建一个DOM元素(<p>),添加到container内,作为最后一个子节点
        var p=document.createElement("p");
        p.innerHTML=text;
        //将p添加到DOM树型结构中
        container.appendChild(p);
    }
</script>
</html>

在这里插入图片描述
(2)采用 insertBefore 将节点插入到指定节点之前;

格式:

var insertedNode = parentNode.insertBefore(newNode, referenceNode)

其中

  • insertedNode 被插入节点 (newNode)
  • parentNode 新插入节点的父节点;
  • newNode 用于插入的节点
  • referenceNode ,newNode 将要插在这个节点之前;

如果 referenceNodenull ,则 newNode 将被插入到子节点的末尾;

目的:实现在节点1,2,3,4前面插入一个新结点;

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h3>测试insertBefore</h3>
    <div id="insertBeforeDiv">
        <p>1</p>
        <p>2</p>
        <p>3</p>
        <p>4</p>
    </div>
<script>
    //insertBefore:在某个节点前插入另一个节点
    var insertBeforeDiv = document.querySelector("#insertBeforeDiv");
    //准备要插入的节点
    var insertNode = document.createElement("p");
    insertNode.innerHTML = "新插入的节点";
    insertBeforeDiv.insertBefore(insertNode, insertBeforeDiv.children[0]);
</script>
</html>

在这里插入图片描述

删除节点

使用 removeChild 删除子节点;

格式

oldChild = element.removeChild(child);

其中

  • child 为待删除节点;
  • elementchild 的父节点;
  • 返回值为该被删除节点;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h3>添加或插入页面已有的节点,原节点就没有了(相当于是移动元素)</h3>
    <p id="beInsert">原p节点</p>
    <ul>
        <li>
            <p>1</p>
        </li>
        <li>
            <p>2</p>
        </li>
    </ul>
</body>
<script>
    //使用appendChild,和insertBefore,要注意,如果添加或插入的节点,是页面已有的节点,那么在添加或插入后,原有的节点就没有了
    //beInsert节点,插入到ul的第一个li标签前
    var beInsert = document.querySelector("#beInsert");
    var ul = document.querySelector("ul");
    //构造一个li标签
    var li = document.createElement("li");
    li.appendChild(beInsert);//<li><p>beInsert内容</p></li>
    ul.insertBefore(li, ul.children[0]);

    //删除ul中最后一个li
    var last = ul.children[ul.children.length - 1];//取最后一个li节点
    ul.removeChild(last);
</script>
</html>

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值