HTML DOM Text()节点

时间:2013-12-03 18:29:07

标签: javascript jquery html dom

我需要处理元素,给定文本节点的路径或 Xpath
我使用以下方法返回元素。

result.singleNodeValue; 返回null 如果有多个childNodes,我可以将它们合并为一个吗?

function xpathElement(expr) {
    var resolver = function (prefix) {
        if ("xhtml" == prefix) {
            return "http://www.w3.org/1999/xhtml";
        }
    }

    var result = document.evaluate(expr, document, resolver, 9, null)

    console.log("function xpathElement: possible multiple nodes:");
    console.log(result);
    result = result.singleNodeValue;
    console.log("function xpathElement: singleNodeValue:");
    console.log(result);


    return result;
}



使用:
当我传入以下内容时,会返回一个文本节点很好

/xhtml:html[0001]/xhtml:body[0001]/xhtml:div[0002]/xhtml:div[0001]/text()[0001]



不起作用:
当我传入以下内容时,返回null

/xhtml:html[0001]/xhtml:body[0001]/xhtml:div[0002]/text()[0003]



这是我正在使用的html

<p class="calibre1">
  <a id="itr"></a>
</p>
<div class="fmhT">
  <b class="calibre3">INTRODUCTION</b>
</div>
<div class="fmtx">
  Between 1843 and 1848, Dickens wrote five novellas or long short stories that he
 published at Christmastime (<i class="calibre6">A Christmas Carol</i>, The Chimes, The
 Cricket on the Hearth, The Battle of Life, and The Haunted Man and the Ghost’s Bargain).
 The stories are not merely set at Christmas or the New Year’s holiday but contain themes
 the author felt were particularly appropriate to the season. While Christmas celebrations
 predate Dickens and there existed before him a tradition of telling ghost-tales at
 Christmas and the turn of the year, Dickens breathed a new and unique vigor into these
 celebrations and traditions that carry forward to this day. He wrote other ghost stories,
 almost all of which are spoofs or farces, but in his “Christmas books” allowed 
supernatural elements a power to awaken characters and readers from their social 
misanthropy.

</div>

似乎这个元素<i class="calibre6">A Christmas Carol</i>正在将文本节点分成3个部分

<div class="fmtx">

的子节点

节点1
“在1843年到1848年之间,狄更斯写了他在圣诞节时发表的五篇小说或长短篇小说(”

节点2
“圣诞颂歌”

节点3
“,编钟,壁炉上的板球,生命之战,鬼屋和幽灵的讨价还价。”故事不仅仅是在圣诞节或新年假期,而是包含作者的主题感觉特别适合这个季节。虽然圣诞节庆祝活动早于狄更斯,并且在他面前存在着在圣诞节和年末讲述幽灵故事的传统,狄更斯为这些庆祝活动和传统注入了新的独特活力。他写了其他鬼故事,其中几乎都是恶搞或闹剧,但在他的“圣诞书”中,超自然元素能够唤醒人物和读者的社会厌恶。         “

<小时/> 我如何将这些文本节点合并为一个?

我试过$('.fmtx').normalize();没有运气,仍然显示3个childNodes。

非常感谢任何帮助,谢谢!


更新

我添加了一个jsfiddle,maby这将更有意义,http://jsfiddle.net/95Bc7/

保持并关注+++++++++++++++++ ancestor xpath element: null底部的控制台日志

1)在斜体文字前选择

+++++++++++++++++ ancestor xpath element: [object Text]



2)在斜体文字上选择

+++++++++++++++++ ancestor xpath element: [object Text]



3)在斜体文字后选择

+++++++++++++++++ ancestor xpath element: null

1 个答案:

答案 0 :(得分:0)

是的,很明显,因为在下面的代码中没有浏览器无法识别的测试

<div class="fmhT">
  <b class="calibre3">INTRODUCTION</b>
</div>

这就是全部。