更改字符串HTML中的图像源属性并再次返回字符串HTML

时间:2017-08-28 15:10:48

标签: javascript html string html-parsing

我有html网页,我想以PDF格式下载此网页。所以我将这个网页转换为字符串,我必须发送到该服务。即我有不变的字符串HTML。我无法添加拆分字符串html的指标。当html网页太大而基本64字符串图像时,我必须用头像图像url更改此基本64字符串(因为它太大而无法用json发送数据)。我有短的html字符串与更改基本64字符串,然后我可以发送到服务端下载PDF。我有一个HTML字符串(看起来像我真正的html字符串)见下文:

var stringHTML = 
"
<div id="myDiv">
   <img src="abc" /></div>
   <img src="abc" /></div>
   <img src="abc" /></div>
   <img src="abc" /></div>
</div>
";

我想将图片src属性值更改为xyz。即我想将HTML字符串转换为:

stringHTML = 
"
<div id="myDiv">
   <img src="xyz" /></div>
   <img src="xyz" /></div>
   <img src="xyz" /></div>
   <img src="xyz" /></div>
</div>
";

如何更改此源属性值并再次返回字符串值?即改变操作后我必须有字符串html ..

1 个答案:

答案 0 :(得分:1)

根据链接的possible duplicate question,您可以执行以下操作:

stringHTML = stringHTML.replace(/abc/g,"xyz");

stringHTML = stringHTML.replace(new RegExp("abc","g"),"xyz"); 

还值得注意的是,您当前的字符串无效。您需要使用单引号(")替换开始和结束双引号('),或者转义字符串中使用的双引号。并且,正如Ivan在评论中提到的,javascript不能跨越没有特殊限额的行(转义换行符等)。你可以这样定义它,我想:

let stringHTML = ' +
    <div id="myDiv"> +
      <img src="abc" /></div> +
      <img src="abc" /></div> +
      <img src="abc" /></div> +
      <img src="abc" /></div> +
    </div>';

你也可以创建一个数组并立即加入它:

let stringHTML = [
    '<div id="myDiv">',
        '<img src="abc" /></div>',
        '<img src="abc" /></div>',
        '<img src="abc" /></div>',
        '<img src="abc" /></div>',
    '</div>'
].join('');

有关多行字符串定义的更多信息,请参阅this question