Javascript 如何替换DOM元素中的元素列表
我需要解析在WYSIWYG编辑器中创建的一些HTML内容,我在变量Javascript 如何替换DOM元素中的元素列表,javascript,html,dom,Javascript,Html,Dom,我需要解析在WYSIWYG编辑器中创建的一些HTML内容,我在变量content中有HTML字符串,但是我需要获取这个HTML字符串中的所有img标记,用一些逻辑(函数)更改它们的src,并用新标记替换旧的img标记 下面是负责逻辑第一部分的代码: let element = document.createElement( 'html' ); element.innerHTML = content 现在,element是一个伪HTML DOM,它包含我在content中
content
中有HTML字符串,但是我需要获取这个HTML字符串中的所有img
标记,用一些逻辑(函数)更改它们的src,并用新标记替换旧的img标记
下面是负责逻辑第一部分的代码:
let element = document.createElement( 'html' );
element.innerHTML = content
现在,element
是一个伪HTML DOM,它包含我在content
中解析的HTML字符串。
现在,我正在获取图像列表并在其中循环,更改src
属性
let img_list = element.getElementsByTagName( 'img' );
for (var i = 0; i < img_list.length; i++) {
some_src = someFunction()
img_list[i].setAttribute("src",some_src)
}
让img_list=element.getElementsByTagName('img');
对于(变量i=0;i
现在,
img\u列表中的图像更新为新的源代码,我需要用新图像替换内容中的旧img,我该怎么做?(我无法将ID添加到content
)中的图像中。下面是一个如何操作html字符串并获取html字符串的示例。希望这能对你有所帮助
const modContent=(content)=>{
//创建一个HTMLDOM元素
const virtualHtml=document.createElement('div');
//将内容传递给HTMLDOM元素
//html将被自动解释
virtualHtml.innerHTML=内容;
//查找所有图像
const images=virtualHtml.queryselectoral('img');
/*启动修改*/
//循环浏览所有图像
images.forEach((图像,索引)=>{
//更新图像路径
image.src=`newurl/${index+1}.jpg`;
});
/*端部修改*/
//return innerHTML将自动转换为字符串
返回virtualHtml.innerHTML;
}
让内容=`
`;
console.log('old content->',content);
//修改内容
content=modContent(content);
console.log('newcontent->',content)代码>那里没有魔法,这应该已经起作用了,为什么图像src不应该更新?您的内容是最新的,您可以使用element.innerHTML来读取,修改后请尝试console.log(element.innerHTML)
。@AminZoubaa确实,我不知道它为什么不起作用,好像我在原始代码中遗漏了什么,谢谢您指出!我发现,您正在创建一个html
dom元素,而不是div或类似的东西。这将生成一个全新的html树,其中包含html->head/body。这并不理想。相反,如果您想使用div
元素,请签出我的答案。这对你来说应该是现成的。