通过特定的内部值查找页面上的所有元素

问题描述 投票:0回答:2

好吧,我现在感觉很愚蠢,但是我真的想不出解决办法,即使有人可以将我指向正确的方向,这也很棒。

我需要一个JavaScript脚本,该脚本将检查页面的DOM,并在找到美元值时将其乘以1.5。

数字的格式可能为$ 1,111.11或$ 1111.11,或者可能没有美元符号。

我将首先解决什么可能的事情?!

javascript jquery bookmarklet
2个回答
0
投票

如果只需要获取值,而不是拥有值的元素...

const { innerHTML } = document.documentElement
const regex = /(\d[\d.,]+|\d)/gm;
innerHTML.match(regex)

如果需要通过其内部值获取元素,则为:

const allPageElements = document.getElementsByTagName('*')
[...allPageElements]
  .filter(element => /(\d[\d.,]+|\d)/.test(element.innerText))
  .forEach(element => element.innerText = 'some new value')

可能您需要改进此正则表达式,因为它将匹配具有数值的所有元素


0
投票

您可以遍历所有元素,将正则表达式的匹配项替换为该数字乘以1.5(在解析出逗号之后):

var elements = document.getElementsByTagName("*");
for(var i = 0; i < elements.length; i++){
    var matches = elements[i].innerText.match(/(\d[\d.,]+|\d)/gm);
    if(matches !== null){
        for(var j = 0; j < matches.length; j++){
            elements[i].innerText = elements[i].innerText.replace(matches[j], Number(matches[j].replace(/,/g, "")) * 1.5);
        }
    }
}

为正则表达式贷给Macabeus。我只是将其复制并应用于元素搜索和替换。

© www.soinside.com 2019 - 2024. All rights reserved.