尝试使用html / javascript显示印刷字形列表

时间:2012-02-02 16:18:53

标签: javascript html character-encoding typography

好吧,你们。我正在尝试编写一些将印刷字形放在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);
}

2 个答案:

答案 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('');
})());