简体   繁体   English

如何获得克隆元素的externalHTML?

[英]How do I get the outerHTML of a cloned element?

I'm trying to avoid jQuery, simply needing to clone an element, eg 我试图避免jQuery,只需要克隆一个元素, 例如

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

Later, I need to 以后,我需要

return table.outerHTML;

but I'm getting the error 但我得到了错误

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

Which, makes sense. 这是有道理的。 Only Element s have outerHTML . 只有Element具有outerHTML

What am I supposed to do here? 我应该在这里做什么?

  • Somehow cast Node to Element since I know it's definitely an Element ? 以某种方式将NodeElement因为我知道它绝对是Element
  • Find some other way to clone the element (without children), but as an element? 寻找其他方式克隆元素(没有子元素),但是作为元素?
  • Or, am I doing something wrong further upstream? 还是我在上游做错了什么? Maybe I don't need to use outerHTML at all? 也许我根本不需要使用outerHTML I thought I needed the outerHTML in React for dangerouslySetInnerHTML ing: 我想我需要的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 } } />; } } 

Don't specify the datatype, Just use 'any' 不指定数据类型,只需使用“ any”

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

Or 要么

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

What about saving the outerHTML directly ? 如何直接保存externalHTML呢?

    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 } } />;
        }
    }

or you can cast cloneNode : 或者您可以cloneNode

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM