将 url 中的 query 字段显示在网页中
目标
将 query 的内容显示在网页中。

query 是 url 的第 4 组成部分。
![]()
- GitLab:query-display
初始化 query 键值对,显示在 HTML
js
let key = 'digit', number = '1234567890';
document.getElementById("digit").innerHTML= key;
document.getElementById("number").innerHTML= number;- 用 let 声明 query 键值对
key = 'digit',number = '1234567890'; - document.getElementById.innerHTML:
用
document.getElementById来找到 id 分别为digit和number的<span>元素,对应HTML中的;HTML<span id="digit"></span> = <span id="number"></span>用
innerHTML将找到的<span>元素的值设置为key和number。
定义 delUrlParam 函数 和 addUrlParam 函数,更新 URL
delUrlParam 和 addUrlParam 分别用于 删除 / 创建 URL 中 query 的键值对。
js
function delUrlParam(param){
let obj = new window.URL(window.location.href);
obj.searchParams.delete(param);
return obj.href;
}
function addUrlParam(key, value){
let obj = new window.URL(window.location.href);
obj.searchParams.set(key, value);
return obj.href;
}
history.pushState({}, 0, addUrlParam(key, number));- 用 new URL() 定义一个 URL 对象,内容为当前窗口 window 的超链接 location.href;
- 分别用 URLSearchParams.delete() 和 URLSearchParams.set() 删除 / 创建 键值对;
return更新后的obj.href;- 使用 history.pushState() 更新 URL。
修改 query 的实现
创建指向 <input> 的变量,添加事件监听器
js
const changeSubmit = document.querySelector(".changeSubmit");
const changeDigit = document.querySelector(".changedDigit");
changeSubmit.addEventListener("click", change);changeSubmit 和 changeDigit 分别指向 数字输入框 和 提交按钮:
js
<div>
<span>修改 digit 的值:</span>
<input type="number" class="changedDigit">
<input type="submit" value="提交" class="changeSubmit">
</div>change() 函数
js
function change(){
history.pushState({}, 0, delUrlParam(key));
history.pushState({}, 0, addUrlParam(key, changeDigit.value));
document.getElementById("number").innerHTML= changeDigit.value;
}- 通过
pushState调用delUrlParam将原 URL 中的 query 键值对删除 - 然后再调用
addUrlParam添加key-changeDigit.value键值对 - 最后用
document.getElementById().innerHTML更新 HTML 的显示内容
完整代码
HTML
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>query</title>
<style>
body{
font-size: 30px;
}
body input{
font-size: 25px;
}
</style>
</head>
<body>
<span id="digit"></span> =
<span id="number"></span>
<div>
<span>修改 digit 的值:</span>
<input type="number" class="changedDigit">
<input type="submit" value="提交" class="changeSubmit">
</div>
<script src="./script.js"></script>
</body>
</html>JS
js
let key = 'digit', number = '1234567890';
document.getElementById("digit").innerHTML= key;
document.getElementById("number").innerHTML= number;
const changeSubmit = document.querySelector(".changeSubmit");
const changeDigit = document.querySelector(".changedDigit");
changeSubmit.addEventListener("click", change);
function change(){
history.pushState({}, 0, delUrlParam(key));
history.pushState({}, 0, addUrlParam(key, changeDigit.value));
document.getElementById("number").innerHTML= changeDigit.value;
}
function delUrlParam(param){
let obj = new window.URL(window.location.href);
obj.searchParams.delete(param);
return obj.href;
}
function addUrlParam(key, value){
let obj = new window.URL(window.location.href);
obj.searchParams.set(key, value);
return obj.href;
}
history.pushState({}, 0, addUrlParam(key, number));