前端学习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 小时前
Vue 低代码可视化 AI 表单设计器 FcDesigner v3.5 版本发布!
前端·vue.js·前端框架
mengge.cloud1 小时前
0824LAMP项目实战:部署WordPress博客平台小白教程
android·linux·运维·服务器·学习·nginx
哈__1 小时前
极空间部署 Spug:集中管理主机、批量执行脚本与 Web 终端
前端
JoannaJuanCV1 小时前
VLM学习-DINOv2论文解读
学习
Virony1 小时前
React基础知识
前端·react.js·前端框架
Hilaku1 小时前
外包前端和大厂前端,写的代码到底有什么本质区别?
前端·javascript·程序员
超爱西西鸭1 小时前
ArkTS延安精神学习应用:四版块 + 三组展开状态 + 大事记时间轴
学习·华为·harmonyos·鸿蒙
liangshanbo12151 小时前
React Hooks 为什么不能在条件分支/循环中调用?
前端·react.js·前端框架
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(49):MemCoE——先学习如何组织记忆,再学习具体记住什么
论文阅读·人工智能·学习·开源·github