从多个<li>元素中复制innerHTML到剪贴板

3

我正在尝试创建一个Greasemonkey脚本,用于复制一些<li>元素的innerHTML,但是由于它们是节点列表,因此我无法完成此操作。

var list = document.querySelectorAll(".bx li");
GM_setClipboard(list.innerHTML)

无论您要对li执行何种操作,都应首先迭代整个列表,然后对每个节点执行操作。 - Koushik Chatterjee
2个回答

1
迭代并生成组合结果。
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);

创建堆上的数组,为其中的每个元素调用函数,然后遍历数组元素以连接它们... 难怪我们的网站如此沉重... - c-smile

0
你需要遍历列表并组合所需的HTML字符串:
var list = document.querySelectorAll(".bx li");
var html = "";
for(var n = 0; n < list.length; ++n) 
   html += list[n].outerHTML;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接