【问题标题】:How to get the result of the clone() function from javascript?如何从 javascript 中获取 clone() 函数的结果?
【发布时间】:2014-06-17 07:06:03
【问题描述】:

这是我的代码:

html = "";
for (i = 0; i < id_array.length; i++){
    html = html.concat($(id_array[i]).clone(true));
}
console.log(html);

id_array 包含 &lt;tr&gt; 标签的 3 个 id。 html 变量的结果不是来自 ids 的 html 代码,而是 object object object ... 为什么?如何从此 id 获取 html 代码? 这是我的html代码,不是我写的,是JQgrid插件生成的。所以我拍了一张照片:

【问题讨论】:

  • 如果你只想要 html,为什么还要克隆?
  • 因为 html() 函数返回 和 标签之间的 html 代码。
  • 代码如此之少且没有 HTML,您将这个问题部分地当作猜谜游戏。如果我的回答没有解决,请给我们更多相关代码并建立一个fiddle

标签: javascript object clone


【解决方案1】:

您似乎想致电outerHTML。为此,您需要原生 DOM 元素,您可以使用 [0]get(0) 获取它:

var html = "";
for (i = 0; i < id_array.length; i++){
    html += $(id_array[i])[0].outerHTML; 
}
console.log(html);

【讨论】:

  • 之前的代码很好,我没有检查你是否进行了编辑
  • 你的意思是$(id_array[i])[0].outerHTML;更好?
  • 获取原生 DOM 元素,它具有 outerHTML 属性(jQuery 没有)
  • 不错。我一直想念过去某个时候开始支持 outerHTML 的 Firefox。
  • @dystroy—outerHTML 在 HTML5 中,但支持可能尚未普及。
【解决方案2】:

clone 返回 jQuery 对象。您不想将它们与空字符串连接起来。相反,使用数组来存储它们:

trs = [];
for (i = 0; i < id_array.length; i++){
    trs.push($(id_array[i]).clone(true));
}
console.log(trs);

您不想在处理 DOM 时使用 HTML 字符串。

【讨论】:

  • 打败我。 OP 是否需要外部 HTML?我不知道。
  • 顺便说一句,$(id_array[i]) 可能需要是$('#' + id_array[i]),OP 没有显示 id_array 的内容是什么,所以如果它只是 ID 那么......。
【解决方案3】:

看来您可能需要 TR 元素的外部 HTML。一些浏览器支持它,但不是全部(令人惊讶的是不支持 jQuery)。在这种情况下,您可以执行以下操作:

var id_array = ['tr0','tr1','tr2'];
var html = "";
var tbody = $('<tbody>');

for (i = 0; i < id_array.length; i++) {
  tbody.append($('#' + id_array[i]).clone(true));
  html += tbody.html();
  tbody.html('');
}

【讨论】:

    猜你喜欢
    • 2021-07-18
    • 2016-01-16
    • 2021-10-24
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多