好吧,你们。我正在尝试编写一些将印刷字形放在html页面上的代码。字形如:& amp(&符号)和&#165(日元)。我使用一个简单的for循环来创建数字160-255(与多个字形相关联的数字)并在前面加上“&#”。我相信会创建一个字符串“& #xxx”,然后将其括在
中并添加到document.body。
问题是,我得到的是浏览器中打印字符串和#160 - &#255的列表。有什么想法格式化这个不同?我以为这可能是编码错误?
var p = null;
// make <p> tags and insert string "&#"+i, where i comes from for loop. //
function makeP(glyphNum){
var gNum = glyphNum.toString();
p = document.createElement("p");
var pGlyph = document.createTextNode("&#"+gNum);
var string = pGlyph.toString();
p.appendChild(pGlyph);
//console.log(p);
document.body.appendChild(p);
}
//create nums for glyphs//
for(var i = 160;i <= 255; i++)
{
makeP(i);
}
答案 0 :(得分:4)
document.createTextNode
不解析HTML实体。而是设置innerHTML
属性。请注意,数字HTML实体必须以&#
为前缀,并以分号(;
)作后缀。
function makeP(glyphNum){
var p = document.createElement("p");
p.innerHTML = "&#" + glyphNum + ";";
document.body.appendChild(p);
}
答案 1 :(得分:2)
另一种方法是使用String.fromCharCode()
按字符代码创建内容。 Here is a jsfiddle.
$('p').append((function() {
var i, s = [];
for (i = 32; i < 1000; ++i)
s[i] = String.fromCharCode(i);
return s.join('');
})());