- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正在研究一个简单的想法 HTMLElement
我偶然发现了以下 Internet Explorer 和 Chrome 的包装器:
对于给定的HTMLElement
与 id
在 DOM 树中,可以检索 <div>
使用其 ID 作为变量名或 window
的属性。所以对于<div>
喜欢
<div id="example">some text</div>
在 Internet Explorer 8和 Chrome 你可以这样做:
alert(example.innerHTML); // Alerts "some text".
或
alert(window["example"].innerHTML); // Alerts "some text".
那么,这是否意味着 DOM 树中的每个元素都会转换为全局对象的属性?这是否也意味着人们可以用它来替代 getElementById
这些浏览器中的方法?
最佳答案
应该发生的情况是“命名元素”被添加为 document
的明显属性目的。这是一个非常糟糕的主意,因为它允许元素名称与 document
的实际属性发生冲突。 .
IE 还添加命名元素作为 window
的属性,从而使情况变得更糟。目的。这是双重糟糕的,因为现在您必须避免在 document
的任何成员之后命名元素。或window
您(或项目中的任何其他库代码)可能想要使用的对象。
这也意味着这些元素作为类似全局的变量是可见的。幸运的是,在这种情况下任何真正的全局 var
或function
代码中的声明会隐藏它们,因此您不必在这里太担心命名问题,但是如果您尝试对名称冲突的全局变量进行赋值,而忘记声明它 var
,当 IE 尝试将值分配给元素本身时,您会在 IE 中收到错误。
通常认为省略 var
是不好的做法。 ,以及依赖在 window
上可见的命名元素或作为全局变量。坚持document.getElementById
,得到更广泛的支持并且更明确。如果您不喜欢打字,您可以编写一个名称较短的简单包装函数。不管怎样,使用 id-to-element 查找缓存是没有意义的,因为浏览器通常会优化 getElementById
无论如何,调用以使用快速查找;当元素发生变化时,你得到的只是问题 id
或从文档中添加/删除。
Opera 复制了 IE,然后 WebKit 加入进来,现在又加入了之前未标准化的将命名元素放在 document
上的做法。属性,以及以前仅适用于 IE 的做法 window
是being standardised HTML5 的方法是记录和标准化浏览器作者对我们造成的每一种可怕的做法,使它们永远成为网络的一部分。所以Firefox 4也将支持这一点。
什么是“命名元素”?任何带有 id
的东西,以及任何带有 name
的内容用于“识别”目的:即表格、图像、 anchor 和其他一些内容,但不包括 name
的其他不相关实例属性,如表单输入字段中的控件名称、<param>
中的参数名称或 <meta>
中的元数据类型。 ‘识别’name
s 是应该避免的,有利于 id
.
关于javascript - 具有 ID 的 DOM 树元素会成为全局属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26251082/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!