我试图列出在for循环中使用计数器作为unicode字符的编号。这个的目的,......让我们说我喜欢这样做。当然,经验丰富的javascript用户可以告诉我这里有什么问题。
要在javascript中使用unicode字符,可以按原样键入,也可以使用转义序列,如:\u8211
。当我尝试将数字部分与逃脱的你结合起来时,我的问题出现了。我得到的错误是“坏转义字符”,这意味着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('');
......我的想法已经用完了
一个例子:
答案 0 :(得分:6)
最大的问题是在解析代码时解释\uXXXX
;就像你不能写'"' + '"'
和""
一样(因为"
是代码中的实际双引号,而'"'
是一个字符串包含 "
),您不能将'\\u' + 'XXXX'
写成与'\uXXXX'
相同的意思。
正如Brad Christie在上面的评论中所说,您应该使用the function String.fromCharCode
将整数转换为您需要的字符:
character = String.fromCharCode(i);
第二个问题 - 这是学术性的,由于上述原因,但我想我应该提一下 - 是\uXXXX
符号期望字符代码以十六进制表示法给出,并将零填充到正好四个十六进制数字,而您使用十进制表示法,并且没有零填充。例如,您正在编写\u65
,但A
的Unicode转义语法实际上是\u0041
。
答案 1 :(得分:0)
试试这个:String.fromCharCode(i);
。
答案 2 :(得分:0)
character = String.fromCharCode(i); // works for me
答案 3 :(得分:0)
尝试这样的事情:
<script language=Javascript>
charCode=2665;
uc='"\\u' + charCode +'"';
document.write('<a title="' + charCode + '">' + eval(uc) + '</a>');
</script>