如何获取克隆元素的outerHTML?

时间:2018-03-16 08:10:01

标签: javascript reactjs typescript dom element

我试图避免使用jQuery,只需要克隆一个元素,例如

var table: Node = document.querySelector('#myTable').cloneNode(false);

后来,我需要

return table.outerHTML;

但是我收到了错误

ERROR in [at-loader] ./src/components/overworld-component.tsx:24:43
TS2339: Property 'outerHTML' does not exist on type 'Node'.

哪个有道理。只有ElementouterHTML

我应该在这做什么?

  • 以某种方式将Node投放到Element,因为我知道它绝对是Element
  • 找一些克隆元素的方法(没有子元素),但是作为一个元素?
  • 或者,我是否在上游做错了什么?也许我根本不需要使用outerHTML?我认为我需要outerHTML中的dangerouslySetInnerHTML export class OverworldComponent extends React.Component<OverworldComponentProps, {}> { render() { var table: Node = document.querySelector('div.file div.data table').cloneNode(false); return <div id="overworld-viewer" dangerouslySetInnerHTML= { { __html: table.outerHTML } } />; } }

    view.getId()

2 个答案:

答案 0 :(得分:1)

不要指定数据类型,只需使用&#39;任何&#39;

var table: any = document.querySelector('#myTable').cloneNode(false);

或者

var table: HTMLElement = <any>document.querySelector('#myTable').cloneNode(false);

答案 1 :(得分:1)

如何直接保存outerHTML?

    export class OverworldComponent extends React.Component<OverworldComponentProps, {}> {
        render() {
            var outerHTML: string = document.querySelector('div.file div.data table').outerHTML;
            return <div id="overworld-viewer"
                        dangerouslySetInnerHTML=
                            { { __html: outerHTML } } />;
        }
    }

或者您可以投射cloneNode

var table: Element = document.querySelector('div.file div.data table').cloneNode(false) as Element;