代码之家  ›  专栏  ›  技术社区  ›  Marksyw

将innerHTML从多个元素复制到剪贴板

  •  3
  • Marksyw  · 技术社区  · 7 年前

    innerHTML <li> 元素,但我不能这样做,因为它是一个节点列表。

    var list = document.querySelectorAll(".bx li");
    GM_setClipboard(list.innerHTML)
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Pranav C Balan Ansh Takalkar    7 年前

    迭代并生成组合结果。

    var list = document.querySelectorAll(".bx li");
    GM_setClipboard(
      // convert nodelist to array
      // for older browser use [].slice.call(list)
      Array.from(list)
      // iterate and get HTML content
      .map(function(e) {
        return e.innerHTML;
      })
      // combine the HTML contents
      .join('')
    )
    

    或者,我们可以简单地使用for循环,这会更好,因为我们不需要创建额外的数组。

    var list = document.querySelectorAll(".bx li");
    
    // initialize string variable for HTML
    var html = '';
    
    // iterate over the nodelist using for loop
    for (var i = 0; i < list.length; i++) {
      // append the HTML content to the string variable
      html += list[i].innerHTML;
    }
    
    GM_setClipboard(html);
    
        2
  •  0
  •   c-smile    7 年前

    您需要浏览列表并编写所需的HTML字符串:

    var list = document.querySelectorAll(".bx li");
    var html = "";
    for(var n = 0; n < list.length; ++n) 
       html += list[n].outerHTML;