export default function urlParams(url) { // eslint-disable-next-line no-param-reassign url = url || location.search || location.href; const params = {}; // eslint-disable-next-line no-useless-escape const reg = /([^\s&?#=\/]+)=([^\s&?#=]+)/g; while (reg.exec(url)) { params[RegExp.$1] = decodeURIComponent(RegExp.$2); } return params; }
时间: 2024-04-10 15:32:04 浏览: 86
这是一个用于解析 URL 参数的函数。它接受 URL 字符串作为参数,如果没有提参数,则默认使用当前页面的 URL。函数通过正则表达式匹配 URL 中的参数,并将其解析为一个值对的对象。最,它会返回这个参数对象。
函数的实现逻辑如下:
1. 如果没有传入 URL 参数,则获取当前页面的 URL。
2. 创建一个空对象 `params` 用于存储解析后的参数。
3. 使用正则表达式 `reg` 匹配 URL 中的参数部分。
4. 循环执行 `reg.exec(url)`,直到无法匹配到新的参数。
5. 在每次循环中,将匹配到的键值对保存在 `params` 对象中,键为 `RegExp.$1`,值为 `decodeURIComponent(RegExp.$2)`。
6. 循环结束后,返回解析后的参数对象 `params`。
这个函数可以方便地用于在 JavaScript 中解析 URL 参数。
相关问题
以下textlist文本增加导出成excel function showList() { var urlParams = new URLSearchParams(window.location.search); var sum1 = urlParams.get("x1"); var sum2 = urlParams.get("x2"); var sum3 = urlParams.get("x3"); var sum4 = urlParams.get("x4"); var name = urlParams.get("name"); var textList = urlParams.get("texts").split(","); var list = document.getElementById("list"); var item; for (var i = 0, len = textList.length; i < len; i++) { if (textList[i] !== "") { item = document.createElement("p"); item.innerText = i + 1 + ". " + textList[i]; list.appendChild(item); } } document.getElementById("sum1").innerText = sum1; document.getElementById("sum2").innerText = sum2; document.getElementById("sum3").innerText = sum3; document.getElementById("sum4").innerText = sum4; document.getElementById("L1").innerText = name; var num = sum1 * 1 + sum2 * 1 + sum3 * 1; document.getElementById("stotal").innerText = num;
这段代码是一个JavaScript函数,用于将给定的文本列表显示在网页上,并将一些参数的值插入到相应的元素中。具体来说,它从URL参数中获取sum1、sum2、sum3、sum4和name的值,以及一个以逗号分隔的文本列表。然后,它将文本列表中的每个非空文本创建为一个段落元素,并将其添加到id为"list"的元素中。最后,它将sum1、sum2、sum3、sum4、name和所有sum值的总和添加到相应的元素中。
如果你想要将这个文本列表导出成Excel文件,你可以使用JavaScript库,比如`xlsx`或`exceljs`来实现。这些库可以将数据导出为Excel文件。你可以在函数中添加一个导出按钮,并在点击按钮时调用导出函数,将数据转换为Excel文件并提供下载链接。
以下是一个使用`xlsx`库导出Excel文件的示例代码:
```javascript
function exportToExcel() {
var urlParams = new URLSearchParams(window.location.search);
var textList = urlParams.get("texts").split(",");
var workbook = XLSX.utils.book_new();
var worksheet = XLSX.utils.aoa_to_sheet(textList.map((text, index) => [index + 1, text]));
XLSX.utils.book_append_sheet(workbook, worksheet, "Text List");
var excelBuffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" });
var blob = new Blob([excelBuffer], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
var url = URL.createObjectURL(blob);
var link = document.createElement("a");
link.href = url;
link.download = "text_list.xlsx";
link.click();
}
```
你可以将这个导出函数添加到你的代码中,并在需要导出Excel文件时调用它。记得在HTML中添加一个按钮,并将`exportToExcel`函数绑定到该按钮的点击事件上。
希望这可以帮助到你!如果你有任何其他问题,请随时问。
created(){ const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const code = urlParams.get('code'); userLogin3({ params: { code: code } }).then((res) => { alert(code) console.log(res) }); }, mounted() { this.name = window.name; // 获取请求域中的name属性值 alert(this.name) this.avatarUrl = window.avatar_url; // 获取请求域中的imageUrl属性值 }为啥我这样写,弹窗限制性的是mounted中的
根据你提供的代码,弹窗限制性的原因可能是因为`mounted()`函数在页面渲染完成后才会执行,而`created()`函数在实例创建后立即执行。所以在`mounted()`函数中,`this.name`和`this.avatarUrl`可能还没有被赋值,导致弹窗中显示的是`undefined`。而在`created()`函数中,`code`已经被赋值,所以弹窗中显示的是`code`的值。
如果你想在`mounted()`函数中弹出正确的值,可以使用`this.$nextTick()`方法,在页面渲染完成后再执行弹窗操作。例如:
```
mounted() {
this.name = window.name;
this.avatarUrl = window.avatar_url;
this.$nextTick(() => {
alert(this.name);
});
}
```
这样就可以确保在页面渲染完成后再弹出正确的值。
阅读全文