Избегайте специальных символов при создании HTML-кода с использованием JavaScript
Привет я хотел бы построить HTML-код динамически с использованием JavaScript. Проблема в том, что он дает мне синтаксическую ошибку, когда я пытаюсь указать класс CSS для таблицы, используя. Я думаю, что мне нужно экранировать специальные символы = и "" здесь. И я попробовал что-то подобное, но это также выдает ошибку неправильного синтаксиса.
for (var i=0; i<array.length; i++)
{
htmlstr = htmlstr+"<table class"+%3D+%22+"test"+%22+"><tr><th>A</th><td>"+array[i].a+"</td></tr><tr><th>B</th><td>"+array[i].b+"</td></tr><tr><th>C</th><td>"+array[i].c+"</td></tr></table>";
}
Кто-нибудь знает, какой правильный синтаксис для этого?
Заранее спасибо!
2 ответа
htmlstr=htmlstr+'<table class="test"><tr><th>A</th><td>'
+array[i].a+'</td></tr><tr><th>B</th><td>'
+array[i].b+'</td></tr><tr><th>C</th><td>'
+array[i].c+'</td></tr></table>';
Например, если вы хотите инкапсулировать <input type="button" onClick="alert('Hello, World!');"></input>
в строке JavaScript вы не можете сделать это за один прогон, потому что код содержит как двойные, так и одинарные кавычки. Вы должны сделать что-то вроде этого:
var htmlCode='<input type="button" onClick="alert('+"'Hello, World!'"+');"></input>';
Вы можете использовать одинарные или двойные кавычки, чтобы определить строковую переменную в JavaScript:
var str0='Hello, World!';
var str1="Hello, World!";
Они абсолютно равны.
Вот пример построения динамически с использованием методов, которые я упомянул в своем комментарии.
CSS
.tableCSS, th, td {
border: 1px solid;
}
.tableCSS thead {
font-weight: bold;
}
Javascript
var array = [],
codePointAt,
length,
i;
array.push({
a: "A",
b: "B",
c: "C"
});
array.push({
a: "a1",
b: "b1",
c: "c1"
});
array.push({
a: "a2",
b: "b2",
c: "c3"
});
array.push({
a: "a3",
b: "b3",
c: "c3"
});
function convertSpaces(text) {
return text.replace(/ /g, "\u00a0");
}
for (i = 1, length = array.length; i < length; i += 1) {
var object = array[0],
table = document.createElement("table"),
thead = document.createElement("thead"),
tbody = document.createElement("tbody"),
tr,
td,
pre,
j;
table.className = "tableCSS";
table.appendChild(thead);
table.appendChild(tbody);
tr = thead.insertRow();
for (j in object) {
if (object.hasOwnProperty(j)) {
td = document.createElement("th");
td.appendChild(document.createTextNode(convertSpaces(object[j])));
tr.appendChild(td);
}
}
tr = tbody.insertRow();
object = array[i];
for (j in object) {
if (object.hasOwnProperty(j)) {
td = tr.insertCell(),
td.appendChild(document.createTextNode(convertSpaces(object[j])));
}
}
pre = document.createElement("pre");
pre.appendChild(table);
console.log(pre.innerHTML);
document.body.appendChild(table);
}
На jsfiddle
И выход из innerHTML
<table class="tableCSS"><thead><tr><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>c1</td><td>b1</td><td>a1</td></tr></tbody></table>
<table class="tableCSS"><thead><tr><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>c3</td><td>b2</td><td>a2</td></tr></tbody></table>
<table class="tableCSS"><thead><tr><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>c3</td><td>b3</td><td>a3</td></tr></tbody></table>