当Chrome上的id =“ pattern”时,为什么以下嵌入式“ OnClick”不起作用?

问题描述

| 这可能是我所忽略的简单事情,但我的google-fu并未提出任何可以解释其原因的信息。以以下代码段为例(现在忽略嵌入式js通常被认为是不好的做法):
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">
<html> 
<head>
    <Meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">
    <title>
    </title>
</head>
<body> 
    <form action=\"\">
      <div>
        <input type=\"text\" id=\"pattern\" value=\"foobar\">
        <input type=\"button\" value=\"Alert\" OnClick=\"alert(pattern.value);\">
      </div>  
    </form>
</body> 
</html>
上面的代码将在IE8和Firefox 3中打印警告消息“'foobar \”,但Chrome将显示“'undefined \'”。将
pattern
更改为类似
pattern_
之类的东西将按预期为所有三个浏览器输出\'foobar \'。 “ 1”是内置js库之一的保留字还是名称?在Chrome浏览器下无法正常运行的原因是什么?     

解决方法

        因为在内部提到的浏览器将DOM元素作为对象附加到全局名称空间(
window
)。因此,带有“ 5”的对象也可以称为“ 6”或什至是“ 7”。我想Chrome不会这样做。 还要检查我对此的特殊问题,尤其是所选答案。 评论后的[edit]:它确实与Chrome(webkit)有关,并且可能与我在此处找到的内容有关。另请参阅quirksmode(在页面中搜索\'pattern \',看起来好像在HTML5中
pattern
input
的属性,因此我可以想象它会干扰具有相同名称的id)     ,        不要使用全局变量通过id访问DOM元素。为此有
document.getElementById(...)
,甚至更好-几乎所有js库/框架中的选择器函数(例如jQuery中的
$(\'#yourid\')
,Prototype中的
$(\'yourid\')
,等等)。它们保证为您提供跨浏览器的支持,而每种浏览器的全局变量可能会有所不同。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...