You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Node List元素转为字符串并提取值‘12803’

解决方案:元素内容检测与指定文本提取

一、实现元素检测并添加样式

当元素sale_info_order_from的内容包含"JDG"时,为invoice_text元素添加绿色粗边框,代码如下:

// 获取目标元素
const saleInfoEl = document.getElementById('sale_info_order_from');
const invoiceTextEl = document.getElementById('invoice_text');

// 检测内容并添加样式
if (saleInfoEl && saleInfoEl.innerHTML.includes('JDG')) {
  invoiceTextEl.style.border = '2px solid green';
  invoiceTextEl.style.fontWeight = 'bold';
}

二、提取目标元素中的数值

从querySelectorAll获取的第二个元素中提取copyTextToClipboard('12803')里的"12803",有两种可靠实现方式:

方法1:解析元素的HTML字符串

将元素转为HTML字符串后,用正则匹配目标数值:

// 获取所有onclick以copyTextToClipboard开头的元素
const copyElements = document.querySelectorAll('[onclick^="copyTextToClipboard"]');

// 确保存在第二个元素
if (copyElements.length >= 2) {
  const targetEl = copyElements[1];
  // 转为HTML字符串
  const elHtml = targetEl.outerHTML;
  // 正则匹配括号内的数值
  const valueMatch = elHtml.match(/copyTextToClipboard\('(\d+)'\)/);
  
  if (valueMatch) {
    const extractedValue = valueMatch[1];
    console.log(extractedValue); // 输出:12803
  }
}

方法2:直接解析onclick属性值

无需转整个HTML字符串,直接读取onclick属性内容并匹配:

const copyElements = document.querySelectorAll('[onclick^="copyTextToClipboard"]');

if (copyElements.length >= 2) {
  const targetEl = copyElements[1];
  const onclickContent = targetEl.getAttribute('onclick');
  // 匹配单引号内的数值
  const valueMatch = onclickContent.match(/'(\d+)'/);
  
  if (valueMatch) {
    const extractedValue = valueMatch[1];
    console.log(extractedValue); // 输出:12803
  }
}

注意:querySelectorAll返回的是NodeList,索引从0开始,第二个元素对应索引1;正则中的\d+匹配连续数字,若目标值可能包含非数字字符,可调整正则为[^']+匹配单引号间的任意内容。

内容的提问来源于stack exchange,提问作者LukGri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:02:49