Javascript 查找图像src并将其替换为匹配的对象值

Javascript 查找图像src并将其替换为匹配的对象值,javascript,arrays,node.js,object,Javascript,Arrays,Node.js,Object,我试图用匹配的键值替换所有src值,文本如下所示: Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum <br /><br /> lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem <img src="71521" alt="[ppm:alt id=17835]" height="426" width="638" /> ipsumlorem ip

我试图用匹配的键值替换所有src值,文本如下所示:

Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum <br /><br />
lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem <img src="71521" alt="[ppm:alt id=17835]" height="426" width="638" /> ipsumlorem ipsumlorem ipsum
我想检查src值是否与对象键匹配,如果匹配,然后用键的相应值替换所有出现的情况,我想要的输出是

Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum <br />
lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem
我尝试了下面回答的所有解决方案,但仍然无法替换src

我的html源代码来自excel工作表,我是这样读的

const rows = fs.createReadStream(csvFilePath,{encoding: `'binary'}).pipe(parser);`

只需遍历
mapObj
的所有属性,然后通过执行
document.querySelector([src='71505'])
即可找到
src
与键的属性相等的任何元素,之后只需修复
src

var mapObj={
'71505': 'https://images.e12b64dd10dd068f0b4b6e8e9e5e/71505.jpg',
'69451': 'https://imagesf697987a167a07402549e86089d/71513.jpg',
'71521': 'https://images673d2cf1bfcb6fcc1d30f91/71521.jpg'
};
for(mapObj中的var键){
document.querySelectorAll(`[src='${key}']`).forEach(item=>item.src=mapObj[key]);
}
log(document.body.innerHTML)
Lorem ipsum-Lorem ipsum-Lorem ipsum-Lorem ipsum-Lorem ipsum-Lorem ipsum


lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsum
使用
forEach
遍历
mapObj
键。每次用键值替换<代码>键<代码>。你说“<强>文本<强>看起来是这样的”,所以我认为你是在要求字符串

let text=`Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum

自相矛盾自相矛盾自相矛盾自相矛盾自相矛盾自相矛盾自相矛盾自相矛盾自相矛盾` var mapObj={ '71505':'https://images.e12b64dd10dd068f0b4b6e8e9e5e/71505.jpg', '69451':'https://imagesf697987a167a07402549e86089d/71513.jpg', '71521':'https://images673d2cf1bfcb6fcc1d30f91/71521.jpg', } Object.keys(mapObj).forEach(key=>{ text=text.replace(`src=“${key}`,`src=“${mapObj[key]}`); })
console.log(文本)您可以将文本包装在容器中,然后使用querySelectorAll获取所有img。然后对该节点列表进行编辑,并用对象的相应结果替换该值

var mapObj={
'71505': 'https://images.e12b64dd10dd068f0b4b6e8e9e5e/71505.jpg',
'69451': 'https://imagesf697987a167a07402549e86089d/71513.jpg',
'71521': 'https://images673d2cf1bfcb6fcc1d30f91/71521.jpg'
}
设txt=document.getElementById('content').querySelectorAll('img').forEach(函数(项){
让srcVal=item.getAttribute('src');
item.setAttribute('src',mapObj[srcVal])
});

Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum

lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsum我的对象如下所示:
问题很简单,但我没有看到任何尝试。为什么
src=“69451”
更改为
src=”https://imagesf697987a167a07402549e86089d/69451.jpg“
而非
https://imagesf697987a167a07402549e86089d/71513.jpg
?我正在使用nodejs,当我在终端中执行console.log时,它不会更改src,我还使用fs.writeFile将结果保存在一个文本文件中,但它不会更改src@nickzoum谢谢你指出,现在更正是正确的made@sam您需要记录
replace
的结果。如果执行
var a=test.replace()
。您应该打印
a
而不是
test
。字符串是不可变的。我想用一个字符串变量来保存html数据,如何替换document.querySelectorAll呢?例如:var html=objectdata我添加到答案中的第二个示例是否适用于您?@sam您是否还想用默认值替换
mapObj
中不存在的
src
?因为只有在这种情况下,
src
不会改变
,所以您可以将文本包装在一个容器中
说起来容易,做起来难。它不会取代src:(@sam它工作正常。请检查代码段。我认为它符合您的预期输出。我使用nodejs,当我在终端中执行console.log时,它不会更改src,我还使用fs.writeFile将结果保存在文本文件中,但它仍然不会更改src@sam您将在其他地方出错,因为代码在 snippet@MaheerAli老实说,如果src是用
而不是
包装的,那么你的解决方案可能不起作用。但事实并非如此,因为我的解决方案也不起作用。尽管答案很好,值得一次投票
var res = row['Description'].replace(/\[(\w+)\]/g, function(s, key) {
   return mapObj[key] || s;
});
const rows = fs.createReadStream(csvFilePath,{encoding: `'binary'}).pipe(parser);`