可以使用非字母数字字符,例如`!@#$%^& *(`用作有效ID吗?

时间:2014-02-22 19:05:53

标签: javascript jquery

我正在为这样的不同元素添加唯一的ID和类

<div id="%'@#K!NG,<$wE3T?">Sweet</div>

所以我抬起头,What are valid values for the id attribute in HTML?在那里,我读到了备受好评的人:

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

但随后我自己进行实验似乎比这更灵活。 Both of these work:

$(document.getElementById("%'@#K!NG,<$wE3T?")).text();

document.getElementById("%'@#K!NG,<$wE3T?").innerHTML;

我是否有一些陷阱我不知道是否包括像!@#$%^&amp; *()&lt;&gt;} |在id名称?

1 个答案:

答案 0 :(得分:3)

它可以在许多浏览器中使用,但保证无法正常工作。为了最大限度地提高安全性,请坚持标准。

这与:Why can't variable names start with numbers?

有关

在HTML / JS中,现在这可能不是一个问题,但请记住你可以这样做:

>>> window.footer
<div id="footer" class="categories">

这几乎是JS早期工作的方式。出于兼容性原因,它仍然有效。它实际上是在HTML5中正式化的,恕我直言,它是HTML5中较差的概念之一。我相当确定每次在实时应用程序中使用它时,Douglas Crockford会杀死一只可爱的小型哺乳动物。 请参阅:DOM: element IDs are global variables