克隆节点时如何保留样式

发布于 2024-11-27 05:07:36 字数 895 浏览 1 评论 0原文

我想获取一个 html 文档(一本书的章节)并将其分成多个页面(一个 DIV 数组,每个页面包含一个适合 DIV 规定尺寸的 html 内容页面)。我使用以下代码遍历 DOM(可以在本网站找到!)。

function walk(node, func)
{
    func(node);
    node = node.firstChild;
    while (node)
    {
        walk(node, func);
        node = node.nextSibling;
    }
};

func 函数称为 test,如下所示。

function test(node)
{
    var copy=node.cloneNode(false);

    currentPageInArray.appendChild(copy);

    //Test if we still fit
    if( $(currentPageInArray).height() <= maxPageHeight )
    {
        //All good
    }
    else
    {
        //We dont fit anymore 
        //Remove node that made us exceed the height
        currentPageInArray.removeChild(copy);

        createNewPage();
        currentPageInArray.appendChild(copy); //into new page
    }
}

我的页面生成正确,但是,我丢失了所有样式,例如斜体、粗体、标题等。如果我尝试克隆(true),许多元素会重复多次。我该如何解决这个问题?提前致谢。

I want to take an html document (a book chapter) and separate it into pages (an array of DIV, each containing a page of html content that will fit within the prescribed dimensions of the DIV). I walk the DOM with the following code (found on this site!).

function walk(node, func)
{
    func(node);
    node = node.firstChild;
    while (node)
    {
        walk(node, func);
        node = node.nextSibling;
    }
};

The func function is called test and is below.

function test(node)
{
    var copy=node.cloneNode(false);

    currentPageInArray.appendChild(copy);

    //Test if we still fit
    if( $(currentPageInArray).height() <= maxPageHeight )
    {
        //All good
    }
    else
    {
        //We dont fit anymore 
        //Remove node that made us exceed the height
        currentPageInArray.removeChild(copy);

        createNewPage();
        currentPageInArray.appendChild(copy); //into new page
    }
}

My pages get generated correctly, however, I lose all styles such as italic, bold, headers, etc. If I try clone(true), many elements get duplicated multiple times. How can I fix this? Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你好,陌生人 2024-12-04 05:07:36

您可以使用 currentStyle 检索每个元素的当前布局(IE<9) 或 getCompulatedStyle(其他)并将其应用于克隆的元素。

You may retrieve the current layout of every element using currentStyle(IE<9) or getComputedStyle(Others) and apply it to the cloned elements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文