在DOM中,可以像这样引用元素的属性:
var universe = document.getElementById('universe');
universe.origin = 'big_bang';
universe.creator = null;
universe.style.deterministic = true;
?我对物体及其隐私的深深敬意,以及如果我不小心,我觉得事情可能会非常错误,这让我想做更多这样的事情:
var universe = document.getElementById('universe');
if(universe.hasAttribute('origin')) then universe.origin = 'big_bang';
etc...
是否真的有必要使用这些访问方法?当然它可能或多或少是必要的,这取决于我操作的元素将具有我期望的属性的确定程度,但一般来说DOM人员认为使用.notation而不是getter和setter是可以的吗?
谢谢!
答案 0 :(得分:3)
是的,没关系;-) 如果DOM中有属性,您可以直接设置或获取它。 没有私人或只读元素或任何东西。顺便说一句,JavaScript没有'then'关键字。
答案 1 :(得分:3)
对于XML文档,必须使用getAttribute
/ setAttribute
/ removeAttribute
等。没有从JavaScript属性到DOM属性的映射。
对于HTML文档,可以使用getAttribute
等来访问属性,但最好不要因为IE6-7有困难。 DOM Level 2 HTML属性不仅更可靠,而且更易于阅读。
目前还不清楚您是否在使用XML或HTML文档。显然origin
不是HTML属性; “自定义”元素和这样的属性不应包含在HTML文档中。但目前还不清楚universe.style.deterministic
指的是什么;如果没有HTML style
属性,您将无法获得CSS样式查找。
答案 2 :(得分:2)
由于跨浏览器问题,我总是使用getAttribute和setAttribute:
if(!universe.getAttribute('origin'))
{
universe.setAttribute('origin', 'big_bang');
}
我不记得具体细节,但我遇到了属性样式 universe.origin 和动态创建DOM元素的问题。
答案 3 :(得分:0)
不,这样做并不好。 DOM对象的大多数属性都可以被覆盖。您不会破坏浏览器的行为,因为它不使用DOM API。但如果他们试图以原始含义使用覆盖属性,那么你将破坏你的JS脚本。
我自己的做事方式,当我有几个属性附加到对象(而不是单个标志或链接)时,是创建一个自定义对象,然后从DOM元素链接它:
var Universe = {
origin: "big_bang",
creator: null,
style: { deterministic: true }
};
document.getElementById('universe')._universe = Universe;