【发布时间】:2011-01-05 10:54:26
【问题描述】:
<html>
<head>
<script>
remove_line(11);
// This should remove the line 11 from source code,
// eliminating the unordered list element.
</script>
</head>
<body>
<p>Some text</p>
<ul><li>Some list item</li></ul>
<a>Some link</a>
</body>
</html>
我完全知道这段代码会伤害你的眼睛。但是,由于非常非典型的技术原因(主要是性能),这将是解决我的问题的最有效方法。这很可能是不可行的,但它确实可以为我节省很多编码和性能问题。
如果不可行(如预期的那样),唯一识别/访问 DOM 的 每个 元素(包括文本)最一致/有效的符号/技术是什么?与元素混合/内联)。
我正在考虑以下符号:tag_name[index] 其中 index 将按照源代码中出现的顺序表示第 X 个元素。但是,我不确定它是否完全有效,也不确定如何在 Javascript 中实现它。我也想过 XPath,但我不确定 Javascript 是否很好地支持它(除了一些“模拟”它的框架)。
更新:我原来的帖子不是很清楚,所以我会澄清一些观点:
我正在开发的库的最终目标是“最小化页面呈现”,因此在服务器端执行并将其发送回用户不是一种选择。一旦我有我正在尝试做的功能实现,我将发布更新。否则在这里解释太长了。
-
为了澄清我真正需要做的事情,让我举一个(虚构的)例子:
- Script X 是一个服务器端脚本,它从 document.html 中随机选择一个 DOM 节点。
- 脚本 X 需要告诉脚本 Y(位于 document.html 中的 Javascript 脚本)删除它选择的 DOM 节点。
- 脚本 X 如何唯一标识它选择的 DOM 节点,以便与脚本 Y 进行通信?
我对如何唯一标识 DOM 节点非常感兴趣,以便脚本 Y 可以识别并操作它。最好它也适用于文本节点。
【问题讨论】:
-
为什么不能通过 CSS 选择器(例如通过 jQuery)或 id(通过
document.getElementById)访问它们? -
真正的原因需要很长时间才能解释,但基本上是因为我正在编写一个可以处理任何给定 HTML 文档的通用库。
标签: javascript html xpath