Звучит так, как будто вы хотите взять параметры запроса и отобразить их в виде ul
с разрывами строк, когда в параметре запроса появляются разрывы строк (например, новая строка, код символа 0x0A, aka \n
в JavaScript и многие другие).похожие языки).
Это процесс, состоящий из трех частей:
- Декодирование параметра с помощью
decodeURIComponent
(вы уже это делаете). - Экранирование символовв результате, которые являются особыми в HTML (на практике достаточно только
&
и <
). - Замена буквенных строк новой строки, которые отображаются в HTML как пробел, с разрывом строки или с использованием элемента
pre
или одного из white-space
CSS-свойств, которые отображают разрывы строк (например, white-space: pre
).
Вот пример, в котором мы конвертируем \n
в<br>
:
// A stand-in for window.location.search, since
// we can't control that in snippets
var search = "?" + [
"line1=" + encodeURIComponent("This is line1"),
"line2=" + encodeURIComponent("This is line2 which has\nmore than one line"),
"line3=" + encodeURIComponent("This is line3")
].join("&");
function getQueryVariable(variable) {
var query = search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return decodeURIComponent(pair[1]);
}
}
}
function escapeHTML(s) {
return s.replace(/&/g, "&").replace(/</g, "<");
}
function addQueryParamLI(ul, param) {
var li = document.createElement("li");
li.innerHTML = escapeHTML(param).replace(/\n/g, "<br>");
ul.appendChild(li);
return li;
}
var ul = document.getElementById("query-params");
addQueryParamLI(ul, getQueryVariable("line1"));
addQueryParamLI(ul, getQueryVariable("line2"));
addQueryParamLI(ul, getQueryVariable("line3"));
Query parameters:
<ul id="query-params"></ul>
Вот пример использования white-space: pre
(единственное изменение заключается в том, что мы не конвертируем \n
в <br>
в addQueryParamLI
и добавляемсвойство CSS для li
элементов с правилом):
// A stand-in for window.location.search, since
// we can't control that in snippets
var search = "?" + [
"line1=" + encodeURIComponent("This is line1"),
"line2=" + encodeURIComponent("This is line2 which has\nmore than one line"),
"line3=" + encodeURIComponent("This is line3")
].join("&");
function getQueryVariable(variable) {
var query = search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return decodeURIComponent(pair[1]);
}
}
}
function escapeHTML(s) {
return s.replace(/&/g, "&").replace(/</g, "<");
}
function addQueryParamLI(ul, param) {
var li = document.createElement("li");
li.innerHTML = escapeHTML(param);
ul.appendChild(li);
return li;
}
var ul = document.getElementById("query-params");
addQueryParamLI(ul, getQueryVariable("line1"));
addQueryParamLI(ul, getQueryVariable("line2"));
addQueryParamLI(ul, getQueryVariable("line3"));
#query-params li {
white-space: pre;
}
Query parameters:
<ul id="query-params"></ul>