我试图列出在 for 循环中使用计数器作为 unicode 字符的编号。这样做的目的,...可以说我这样做是为了好玩。当然,经验丰富的 JavaScript 用户能够告诉我这里出了什么问题。
要在 javascript 中使用 unicode 字符,可以按原样输入,也可以使用转义序列,例如:\u8211
。当我尝试将数字部分与转义的 u 结合起来时,我的问题就出现了。我得到的错误类似于“错误的转义字符”,这意味着 i
变量中的数字未与\u 组合
正如我所希望的那样。
for (var i=65; i< 90; i++ ) {
anchor = document.createElement('a'),
img = document.createElement('img'),
character = "\\u"+i;
img.setAttribute('alt', character);
img.setAttribute('src', '');
anchor.appendChild(document.createTextNode(i +": "));
anchor.appendChild(img);
anchor.setAttribute('title', character);
body.appendChild(anchor);
body.appendChild(document.createElement('br'));
}
我尝试过的:
character = "\u{"+i+"}"
cha = ['\\u'];
cha.push(i);
cha.join('');
...我已经没有想法了
一个例子:
最佳答案
最大的问题是\uXXXX
是在解析代码的时候被解释的;正如您不能将 '"' + '"'
写成与 ""
相同的意思(因为 "
是一个实际的双 -在代码中引用,而 '"'
是一个字符串包含 "
),你不能写 '\\u' + 'XXXX'
与 '\uXXXX'
的含义相同。
正如 Brad Christie 在上面的评论中所说,您应该使用 the function String.fromCharCode
从整数转换为您需要的字符:
character = String.fromCharCode(i);
第二个问题 — 由于上述原因,这是学术问题,但我认为我应该提及 — 是 \uXXXX
表示法期望字符代码以 十六进制 表示法,并用零填充恰好为四个十六进制数字,而您以 十进制 表示法给出它,并且没有用零填充。例如,您正在编写 \u65
,但 A
的 Unicode 转义语法实际上是 \u0041
。
关于javascript - 在 for 循环中生成一个 unicode 字符列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746278/