前端学习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>

代码案例:代办事项

相关推荐
小poop4 小时前
CSS 基础与实战:从入门到精通网页美化
前端
宝绿特塑业再生科技5 小时前
改性HDPE再生颗粒在户外家具挤出发泡板材中的色差控制与高品质价值重构
经验分享·科技·学习·生活·1024程序员节·户外家具
Csvn6 小时前
运行时性能
前端
Never_every997 小时前
位图转矢量工具哪个好?实测抠抠图AI位图转矢量工具
大数据·前端
paopaokaka_luck7 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
andrsted7 小时前
练题簿在线免费刷题:让整理过的资料,变成能反复练习的题库
学习·微信小程序·小程序·学习方法·刷题·1024程序员节
空中湖8 小时前
用 React 写数据大屏:为什么我不建议用图表库
前端·react.js·前端框架
Alsn868 小时前
Windows 安装 Ollama 及本地模型部署
学习·1024程序员节
欣欣之王来了9 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
IT_陈寒9 小时前
Redis的LRU淘汰策略坑了我一整天
前端·人工智能·后端