前端学习JS(3)

JavaScript

操作节点

两个步骤

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

创建

javascript 复制代码
var element = document.createElement(tagName[,options]);

插入到最后一个

javascript 复制代码
element.appendChild(aChild)
javascript 复制代码
    let element = document.createElement('h3')
    element.innerHTML = '这是我们新创建的节点'
    let div = document.querySelector('div')
    div.appendChild(element)

插入到指定节点之前

javascript 复制代码
var insertedNode = parentNode.insertBefore(newNode,referenceNode);
html 复制代码
<body>
    <div>
        <p class="p1">这是p标签</p>
    </div>
</body>
<script>
    let element = document.createElement('h3')
    element.innerHTML = '这是我们新创建的节点'
    let div = document.querySelector('div')
    div.appendChild(element)
    let new_node = document.querySelector('p')
    new_node.innerHTML = '这是一个新的p标签'
    div.insertBefore(new_node,document.querySelector('p1'))
</script>
  • 删除节点
    被删除节点是从dom树被删除了,但是任然在内存中,可以随时加入到dom树的其他位置
    返回值是被删除的节点
html 复制代码
<body>
    <div class="container">
        <div>1</div>
        <div>2</div>
        <div id="delete">3</div>
    </div>
</body>
<script>
    let parent = document.querySelector('.container')
    let child = document.querySelector('#delete')
    parent.removeChild(child)
</script>

一个节点插入两次,只是最后一次的生效

代码案例:猜数字

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .false {
            color: red;
        }
        .true {
            color: green;
        }
    </style>
</head>
<body>
    <input class="reset_button" type="button" value="重新开始一局游戏" onclick="reSet()"><br>
    请输入要猜的数字:<input class="to_guess_num" type="text" value="0"><input type="button" value="猜" onclick="Guess()"><br>
    已经猜的次数:<span class="has_guess_num">0</span><br>
    结果:<span class="result"></span>

</body>
<script>
    let to_guess_num_element = document.querySelector('.to_guess_num')
    let input_num_element = document.querySelector('.has_guess_num')
    let result_element = document.querySelector('.result')
    function generateRandomNum() {
        return Math.floor(Math.random() * 100) + 1;
    }
    let num = generateRandomNum();
    console.log(num)
    function reSet() {
        to_guess_num_element.value = 0
        input_num_element.innerHTML = 0
        result_element.innerHTML = ''
        num = generateRandomNum();
        console.log(num)
    }
    
    function Guess() {
        input_num_element.innerHTML = parseInt(input_num_element.innerHTML) + 1
        if(num < parseInt(to_guess_num_element.value)) {
            result_element.innerHTML = '猜大了'
            result_element.className = 'false'
        } else if(num > parseInt(to_guess_num_element.value)) {
            result_element.innerHTML = '猜小了'
            result_element.className = 'false'
        } else {
            result_element.innerHTML = '猜中了'
            result_element.className = 'true'
        }

    }
</script>
</html>

代码案例:表白墙

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="container">
        <h1>表白墙</h1>
        <p>输入相关信息,点击提交数据会展示在表格中</p>
        <div class="div1">
            <span>谁:</span><input type="text" class="edit">
        </div>
        <div class="div1">
            <span>对谁:</span><input type="text" class="edit">
        </div>
        <div class="div1">
            <span>说:</span><input type="text" class="edit">
        </div>
        <div class="div1">
            <input type="button" value="提交" class="submit" onclick="Submit()">
        </div>
    </div>
    
</body>
<style>
    * {
        margin: 0%;
        padding: 0%;
    }
    .container {
        width: 400px;
        margin: 0 auto;
    }
    h1 {
        text-align: center;
        margin-bottom: 40px;
    }
    p {
        text-align: center;
        color: gray;
        line-height: 63px;
    }
    .div1 {
        display: flex;
        justify-content: center;
        align-items: center;
    }
    .edit {
        margin-bottom: 20px;
        width: 200px;
        height: 30px;
    }
    span {
        width: 50px;
        margin-bottom: 20px;
    }
    .submit {
        background-color: chocolate;
        color: white;
        width: 260px;
        height: 30px;
        border: none;
        border-radius: 5px;
    }
    .submit:active {
        background-color: gray;
    }
</style>
<script>
    function Submit() {
        let edits = document.querySelectorAll('.edit')
        // console.log(edits)
        let from = edits[0].value
        let to = edits[1].value
        let message = edits[2].value
        console.log(from + ' ' + to + ' ' + message)
        let div = document.createElement('div')
        div.className = 'div1'
        div.innerHTML = from + '对' + to + '说:' + message
        let container = document.querySelector('.container')
        container.appendChild(div)
    }
</script>
</html>

代码案例:代办事项

相关推荐
爱吃苹果的日记本1 小时前
数据结构第三课(时间复杂度)
数据结构·学习
几何心凉2 小时前
没有万能模型:我用 AiiOnly Token Plan,把多款大模型的长处拼进同一个项目
前端
kyriewen2 小时前
Claude Code 的额度今天缩水了17%——官方公告上写的是"永久提高25%"
前端·ai编程·claude
雪芽蓝域zzs3 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js
风骏时光牛马4 小时前
从零到实战,完整AI学习路线
前端
泡泡鱼(敲代码中)4 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
三十而立洋4 小时前
深入理解 Monorepo:子包安装依赖
前端·前端工程化
IT_陈寒4 小时前
Java Stream处理大集合,我的内存怎么就炸了
前端·人工智能·后端
Captaincc5 小时前
AI 用量桌面端-桌面宠物自定义指南
前端·人工智能
OpenTiny社区5 小时前
码力全开,智启前端新生态|OpenTiny 登陆华为全联接大会2026
前端·github