JavaScript
操作节点
两个步骤
- 创建元素节点
- 把元素节点插入到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>