属性和属性在JavaScript中的含义相同吗?

属性和属性在JavaScript中的含义相同吗?,javascript,dom,html4,Javascript,Dom,Html4,IE8及以下版本对属性和属性的处理类似 它们的意思相同吗 对语义进行了相当多的讨论。。。而术语的不同语言用法…属性和属性在DOM中是不同的。但是,在IE 8及以下版本中处理类似 我在跨浏览器兼容性方面遇到了一个问题 问题:自定义属性在IE8的HTML4/JavaScript中作为属性访问。需要使HTML与Chrome、Safari和IE9兼容 解决方案:可以迭代元素以检查自定义属性,并将这些属性添加为属性 示例代码: var propertyName=obj.attributes[index].

IE8及以下版本对属性和属性的处理类似


它们的意思相同吗

对语义进行了相当多的讨论。。。而术语的不同语言用法…

属性和属性在DOM中是不同的。但是,在IE 8及以下版本中处理类似

我在跨浏览器兼容性方面遇到了一个问题

问题:自定义属性在IE8的HTML4/JavaScript中作为属性访问。需要使HTML与Chrome、Safari和IE9兼容

解决方案:可以迭代元素以检查自定义属性,并将这些属性添加为属性

示例代码:

var propertyName=obj.attributes[index].nodeName//(属性名称不区分大小写) obj[propertyName]=值//(检查obj.customAttribute的实现)

提示:
与IE 8及以下版本不同,IE 9及以上版本解决了这个问题,并以不同的方式对待属性和属性。

@所有认为属性和属性相同的人:

没有

HTML元素的属性和属性不同

从DOM的角度来看: 属性是私有变量,属性存储在作为HTML元素的子节点存储的NamedNodeMap中

从JavaScript的角度(实现): var elem=document.getElementById(“ID”)

elem.prop=somevalue//访问属性

元素getAttribute(“attributeName”)//访问属性:getter 元素setAttribute(“attributeName”、“value”)//访问属性:setter


有关实现的详细信息,请参阅我的另一个答案。

HTML元素也可以同时具有属性和属性。属性可以通过javascript对象使用点(.)操作符访问,而属性只能通过DOM中定义的getter和setter访问。请参阅问题。编辑了问题。:)我已经把你的问题恢复到原来的形式。如果你想发布自己的答案,请将其作为以下答案发布;不是对你的问题进行编辑。另外,在别人回答了你的问题后再编辑它的意思或目的是不正确的。这个问题和它被接受的答案是误导性的,可能会在javascript新手中产生误解。整个主题,包括讨论和论点,都应该彻底阅读。原始海报回答了这个问题(并接受了答案)。答案根本上是有缺陷的。在他对其他人的回答的评论中,他认为可以使用带有javascript对象的点(.)运算符访问属性,而只能使用DOM中定义的getter和setter访问属性。getter和setter确实是访问属性的方便方式,但断言这是获取它们的唯一途径从根本上说是错误的。它否认了javascript中没有私有变量的基本事实,如果程序员知道它们在哪里,他/她可以使用点或数组表示法访问它们。请看我的示例-此线程(以及同一海报在同一主题上打开的另一个线程)应删除或清理。根据Andrew Barber的说法,请再次回滚。您提供的链接与我想要共享的内容不符。请参阅我编辑的问题。:)这与我最初回答的问题完全不同。我已将问题编辑回原来的形式,并要求OP不要再这样做。也就是说,我有一个答案的建议:请尝试在这里充实它,而不仅仅是一个外部资源的链接。也就是说,如果一个问题的初衷正在改变,你可能会也可能不想把精力花在这个问题上……谢谢安德鲁。。我想我会让这个过去的。我提供的链接背后的线程比我能说的多得多,我不喜欢复制东西,除非绝对必要。请检查Safari/Chrome中的HTML4文档,等等,其中包含自定义属性(由用户定义)无法作为elem.attributeName访问。原始断言为:**HTML元素也可以同时具有属性和属性。属性可以通过javascript对象使用点(.)运算符访问,而属性只能通过DOM**中定义的getter和setter访问,因为您反驳了我对Joeframbach的回答的评论。我认为属性和属性都可以使用点表示法访问。请提供一个真实的示例,以便我可以使用我们自己选择的DOM对象来查看这是否正确。我的工作示例响应您的断言“只能使用getter和setter访问属性”。。。obj.customAttribute——仅在IE8及以下版本中,该评论应该为本次讨论的上下文或内容添加一些内容吗?这在技术上是缺乏的<代码>var propertyName=obj.attributes[index].nodeName是不充分的,因为除了属性名称之外,属性必须事先知道实际属性的索引-有关说明,请参见的最后一行-设置名为“thing”的属性的正确符号应为
obj.attributes.thing.value=value-无需迭代attributes属性即可找到该属性。有关说明,请参见上面链接中的JSFIDLE的其余部分。