【问题标题】:saving html element to a variable [duplicate]将html元素保存到变量[重复]
【发布时间】:2016-08-15 19:40:36
【问题描述】:

此 JS 尝试将 html 元素保存到 myHTML。但后来当该元素发生变化时,变量也会发生变化。
如何保存myHTML 的副本以供以后使用?

let myHTML = '';
$('td.label').each(function() {
  if (this.textContent === "sign:") {
    if (!myHTML) myHTML = this.parentElement;
    return false;
  }
});

//later the elemnt gets changed
$('td.label').each(function() {
  if (this.textContent === "sign:") {
    this.parentElement.appendChild(some-html-element)
    return false;
  }
});

console.log(myHTML);  //it includes the some-html-element

【问题讨论】:

标签: javascript jquery


【解决方案1】:

使用the cloneNode() methodmyHTML 设置为元素的副本

myHTML = this.parentElement.cloneNode();

【讨论】:

  • 它不会克隆树的其余部分,这不是我想要的。我想克隆整棵树
【解决方案2】:

我认为因为它是一个对象,所以 js 会引用它,并且在更改时,甚至您的 myHTML 对象也会更改。下面的这种方法应该可以正常工作,因为它没有直接使用 DOM 对象。

var myHTML;

$('td.label').each(function() {
    if( $(this).text() === "sign:" ) {
        if( !myHTML ) {
            myHTML = $(this).parent();
        }

        return false;
    }
});

$('td.label').each(function() {
    if( $(this).text() === "sign:" ) {
        $(this).parent().append("some-html-element");
        return false;
    }
});

console.log(myHTML);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2014-10-12
    • 1970-01-01
    • 2013-07-17
    • 2013-09-09
    • 1970-01-01
    • 2015-03-22
    相关资源
    最近更新 更多