2017-08-28 38 views
0

我有html網頁,我想將此網頁下載爲pdf。所以我把這個網頁轉換爲字符串,我必須發送到服務。也就是說,我有不變的字符串HTML。我無法爲分割字符串html添加指標。當基於64位字符串圖像的html網頁太大時,我必須使用頭像圖像url來更改此基本64字符串(因爲它太大而無法使用json發送數據)。我有更改base 64字符串的短html字符串,然後我可以發送到服務端下載pdf。我有一個HTML字符串(它看起來像我真正的HTML字符串)見下文:更改字符串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 ..

+0

[查找並替換textarea中的所有匹配字符串]可能的重複(https://stackoverflow.com/questions/8809172/find-and-replace-all-matching-strings-within-textarea) –

+1

只是所以你知道你的兩個片段都不是有效的JS代碼。你不能像這樣跳線和縮進字符串。 – Ivan

回答

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

0

最好在替換函數中使用整個「src」賦值,以防止任何不必要的替換。

例如: stringHTML = stringHTML.replace(/ src =「abc」/ g,'src =「xyz」')如果將src值用雙引號括起來。 或 stringHTML = stringHTML.replace(/ src ='abc'/ g,「src ='xyz'」)如果用單引號包裝src值。

相關問題