我正在try 使用document.evaluate() Select 一个包含1'000 g的元素.问题出在apostrophe.我try 使用\u0027''\'\\'',但它们要么触发无效的XPath表达式错误,要么不返回任何元素.

const items1 = document.evaluate(
  "//p[contains(normalize-space(.), '1000\u00a0g')]",
  document,
  null,
  XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
  null,
);
console.log("item1", items1.snapshotItem(0).textContent);

const items2 = document.evaluate(
  "//p[contains(normalize-space(.), '1'000\u00a0g')]",
  document,
  null,
  XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
  null,
);
console.log("item2", items2.snapshotItem(0).textContent);
<p>1000&nbsp;g</p>
<p>1'000&nbsp;g</p>

document.evaluate()中使用xpath表达式 Select 包含撇号的元素的正确方法是什么?

推荐答案

要将撇号包括在XPath的"CONTAINS"部分中,您需要将其用作原义字符,并将字符串括在双引号中,您必须在外部字符串中使用\"进行替换:

const items1 = document.evaluate(
  "//p[contains(normalize-space(.), '1000\u00a0g')]",
  document,
  null,
  XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
  null,
);
console.log("item1", items1.snapshotItem(0).textContent);

const items2 = document.evaluate(
  "//p[contains(normalize-space(.), \"1'000\u00a0g\")]",
  document,
  null,
  XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
  null,
);
console.log("item2", items2.snapshotItem(0).textContent);
<p>1000&nbsp;g</p>
<p>1'000&nbsp;g</p>

Javascript相关问答推荐

是否有方法在OpenWeatherMap API中获取过go 的降水数据?

useNavigation更改URL,但不呈现或显示组件

处理时间和字符串时MySQL表中显示的日期无效

在拖放时阻止文件打开

查找最长的子序列-无法重置数组

cypress中e2e测试上的Click()事件在Switch Element Plus组件上使用时不起作用

并不是所有的iframe都被更换

try 使用javascript隐藏下拉 Select

更新动态数据中对象或数组中的所有值字符串

第二次更新文本输入字段后,Reaction崩溃

如何将未排序的元素追加到数组的末尾?

JavaScript是否有多个`unfined`?

在画布中调整边上反弹框的大小失败

当我try 将值更改为True时,按钮不会锁定

将基元传递给THEN处理程序

如何使用抽屉屏幕及其子屏幕/组件的上下文?

bootstrap S JS赢得了REACT中的函数/加载

当达到高度限制时,如何裁剪图像?使用html和css

Reaction路由v6.4+数据API:重试加载程序而不显示错误

单击时同时 Select 和展开可访问的行