我正在尝试将所有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
我的对象如下:
var mapObj = {
'71505':'https://images.e12b64dd10dd068f0b4b6e8e9e5e/71505.jpg',
'69451':'https://imagesf697987a167a07402549e86089d/69451.jpg',
'71521':'https://images673d2cf1bfcb6fcc1d30f91/71521.jpg',
...
}
我想检查src值是否与对象键匹配,然后用对应的键值替换所有出现的值,我想要的输出是
Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum <br />
lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem
到目前为止,我有以下内容,但不起作用
var res = row['Description'].replace(/\[(\w+)\]/g, function(s, key) {
return mapObj[key] || s;
});
我尝试了下面回答的所有解决方案,但仍然无法替换src。
我的html源来自excel工作表,我正在这样阅读
const rows = fs.createReadStream(csvFilePath,{encoding: `'binary'}).pipe(parser);`
答案 0 :(得分:2)
使用keys
遍历mapObj
的{{1}}。每次将forEach
替换为key值。您说“ 文本看起来像这样” ,所以我认为您要输入字符串
key
答案 1 :(得分:1)
只需遍历mapObj
的所有属性,然后通过执行src
可以找到document.querySelector("[src='71505']")
与键的元素相等的任何元素,之后只需修复{{ 1}}。
src
var mapObj = {
'71505': 'https://images.e12b64dd10dd068f0b4b6e8e9e5e/71505.jpg',
'69451': 'https://imagesf697987a167a07402549e86089d/71513.jpg',
'71521': 'https://images673d2cf1bfcb6fcc1d30f91/71521.jpg'
};
for (var key in mapObj) {
document.querySelectorAll(`[src='${key}']`).forEach(item => item.src = mapObj[key]);
}
console.log(document.body.innerHTML);
如果HTML为字符串形式,并且您不想将其解析为HTML,则应将Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum <br />
<img src="69451" alt="[ppm:alt id=17835]" height="426" width="638" /><br /> lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem <img src="71521" alt="[ppm:alt id=17835]" height="426" width="638" /> ipsumlorem ipsumlorem ipsum
和src ='$ {key}'的所有匹配项替换为{{1 }}。像这样:
src="${key}"
答案 2 :(得分:1)
您可以将文本包装在容器中,然后使用querySelectorAll获取所有img。然后迭代该节点列表,并将该值替换为对象的相应结果
var a = {
"Data": [{
"name": "John",
"age": 30
},
{
"joined on": "Jan 2015",
"working on": "Automation",
}
]
}
console.log(a.Data[0].name)
var mapObj = {
'71505': 'https://images.e12b64dd10dd068f0b4b6e8e9e5e/71505.jpg',
'69451': 'https://imagesf697987a167a07402549e86089d/71513.jpg',
'71521': 'https://images673d2cf1bfcb6fcc1d30f91/71521.jpg'
}
let txt = document.getElementById('content').querySelectorAll('img').forEach(function(item) {
let srcVal = item.getAttribute('src');
item.setAttribute('src', mapObj[srcVal])
});