gpt4 book ai didi

java - 定义dom中属性的顺序

转载 作者:行者123 更新时间:2023-11-30 04:37:22 26 4
gpt4 key购买 nike

我目前正在研究 DOM,我想知道如何更改标签数据的位置例如

我已经创建了元素:

propElement = document.createElement("prop");

Prop 正在打开标签。

然后

propElement.setAttribute("name", "name1");

propElement.setAttribute("name2", "name2");

问题是,尽管我将 set 方法 name2 放在 name1 之后,但我会在 name1 之前的标签 name2 中看到。

如何更改订单?

(注意;我使用的是 Java DOM API,而不是 JavaScript。)

最佳答案

不能,元素上属性的顺序并不重要。事实上,在实时 DOM 中,没有顺序。顺序似乎仅与 DOM 的序列化形式相关(例如,HTML 标记等)而存在。即便如此,除了与无效文本相关之外,该顺序没有任何意义(更多内容见下文)。

属性基本上是对象(它们所附加的 DOM 元素)的简单属性。它们绝对没有顺序,事实上它们在 DOM 中的表示是 NamedNodeMap这是“...不以任何特定顺序维护。”

请务必记住,DOM 描述了一个对象模型。 DOM 的序列化形式可能是文本的(例如,定义 DOM 的 HTML 文档),但 DOM 不是。在 HTML 文档中,由于它是线性文本(从上到下、从左到右),定义一个属性的文本自然必须位于描述另一个属性的文本之前,但这并不意味着任何属性生成的 DOM 对象中的属性有某种顺序,因为它们根本没有顺序。所以这个:

<div a="1" b="2">...</div>

描述与此完全相同相同的元素:

<div b="2" a="1">...</div>

生成的元素是一个 div,它具有一个值为 1 的属性 a 和一个属性 b值为 2

这与在程序源中设置对象的属性完全相同。考虑一些具有 xy 属性的假设 obj。这段代码:

obj.a = 1;
obj.b = 2;

...结果与此代码完全相同相同的对象:

obj.b = 2;
obj.a = 1;

...假设 ab 确实是简单字段(不是可能产生副作用的隐藏函数调用),对于 DOM 中的属性来说也是如此。

有一种小方法可以使 DOM 的文本(序列化)形式中的属性顺序发挥重要作用,并且它仅与无效文本相关:如果如果多次指定相同的属性,则仅使用给定的第一个值,因为多次指定相同的属性是无效的。这些值不会合并,后续值不会覆盖前一个值。仅使用第一个。

所以这个无效 HTML:

<div class="foo" class="bar">...</div>

...实际上会产生一个带有 class "foo"div ("bar" 不是存在)。但这只是处理无效序列化表单的一种应对机制。

关于java - 定义dom中属性的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13160339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com