javascript 是否可以在alert()对话框中显示上标字符?

wyyhbhjk  于 2023-05-27  发布在  Java
关注(0)|答案(5)|浏览(132)

在JavaScript的alert()confirm()prompt()对话框中是否可以显示上标字符(不仅是数字)?
由于一些原因,我需要插入一个文本:

  • 2后跟上标'n'*2^n

进入JavaScript警告、确认和提示框。快速的谷歌搜索确实有帮助,但并不完全是我找到了一种方法,使用Unicode \u00B 字符在对话框中显示上标数字,但它不适用于字符

alert('2\u00B2'); shows correctly 2^2
alert('2\u00Bn'); shows 2u00Bn

所以目标是显示一个上标的字符,而不是数字。
^用作幂,并显示下一个字符是上标的,以防有人混淆。

wz8daaqr

wz8daaqr1#

这个字符代码并没有什么神奇之处--它只是碰巧被选作“上标2”字符。还有一个“上标三”(\u00B3)(³)、一个“上标一”(\00B9)(¹)和一个“上标拉丁小写字母N”(\u207F)()。但如果您需要其他上标,就不太走运了--alert()不呈现HTML,所以只能使用Unicode定义的字符。
您最好完全放弃alert(),并在页面本身中模拟一个模态对话框。许多库已经提供了这种功能,包括优秀的jQuery UI Dialog

sg24os4d

sg24os4d2#

,没有可靠的方法将上标文本放入警告框。您当然可以在页面上使用HTMLx 1 m0n1x标记来执行此操作,但在警告框中则受到更多限制。

问题是:没有“Unicode \u00B”字符。您使用的字符是\u00B2(定义为“上标二”)。最后有一个2的事实本质上是巧合。例如,代码点\u00B1是不相关的(它是加号/减号)。
还有一些其他字符在Unicode中有特定的上标版本,您可以在this search中找到,但并不是每个字母都有上标版本。

o4hqfura

o4hqfura3#

Unicode或UTF-8需要两对字符或四个十六进制数字来组成一个字符; 00B2被识别为“上标2”,而00Bn是无效的十六进制值。上标数字1-3是:00B900B200B3
不幸的是,没有神奇的上标前缀,将使以下字符上标。只有HTML <sup>可以做到这一点,就像Shog说的,alert呈现纯文本。

dgiusagp

dgiusagp4#

我最终写了以下代码来生成unicode上标整数:

const unicodeSuperscriptNumbers = [
    "\u2070",
    "\u00B9",
    "\u00B2",
    "\u00B3",
    "\u2074",
    "\u2075",
    "\u2076",
    "\u2077",
    "\u2078",
    "\u2079",
  ];

  function superscript(n: number) {
    if (!n) throw "no number provided";
    if (!Number.isInteger(n)) throw "We don't bother with non-integer superscripts for now";
    if (n < 0) return "\u207B" + superscript(n * -1);
    if (n > 10) return superscript(~~(n / 10)) + superscript(n % 10);
    return unicodeSuperscriptNumbers[n];
  }

如果您还需要其他字符,this blog post列出了大多数(但不是所有)大写和小写上标unicode字母,并且扩展上面的代码以处理其他字符相对简单。

yhived7q

yhived7q5#

npm包numbers-to-superscript将指定字符串中的所有数字转换为上标。
或许是个选择。

相关问题