获取除特定后代节点之外的节点的innerHTML

时间:2012-08-31 08:28:38

标签: javascript html dom nodes

假设您想要获取节点A的innerHTML,但是您想要排除节点B,即节点A的后代的文本节点。您对节点B的引用存储在变量中,而您不是想要从页面中删除节点B.您还事先不知道节点A中的其他内容,因此使用正则表达式从文本节点中删除文本可能会导致意外后果(如果其他地方存在相同的文本)。有没有办法在不修改页面的情况下执行此操作,如果有,怎么做?

3 个答案:

答案 0 :(得分:1)

您可以克隆A节点,从中删除B节点,从而获得其innerHTML

var A_clone = A.cloneNode();
A_clone.removeChild(B);  
/* B has to be evaluated from the cloned node or - if previously
 * evaluated - it will be a reference of the original A node 
 */

console.log(A_clone.innerHTML);

答案 1 :(得分:0)

它不会很快,但你可以:

  • 克隆外部节点
  • 下降到克隆的内部节点(使用某种查找功能)并将其删除
  • 存储克隆节点的innerHTML
  • 放弃克隆节点
  • 返回存储的innerHTML

答案 2 :(得分:0)

你也可以使用XMLSerializer对象,序列化a和b,最后用“”替换b中的b匹配