2011-07-12 105 views
0

的情況下,任何人都解決了,它需要在這裏它是更換src屬性IMG元素

var feed  = feeds.entries[i].content; 
var parsedFeed = feed.replace(/src=/gi, "tempsrc="); 
var tmpHolder = document.createElement('div'); 
tmpHolder.innerHTML=parsedFeed; 

我有一個包含HTML標記,其中包括<img src='path.jpg'/>

我想一個字符串運行一個正則表達式對字符串的每一個SRC ATTR更換到tmpSrc

所以

<img src='path.jpg'/> 

會變成

<img tmpSrc='path.jpg'/> 

這是在JavaScript的方式

,這裏是張貼在其他地方根本問題,但一直沒有解決

Browser parse HTML for jQuery without loading resources

How to parse AJAX response without loading resources?

由於

+4

如果HTML是問題,則正則表達式不是答案... – Alnitak

+0

它包含在一個字符串內,即.. var result ='

.... ...
'; – samccone

+0

HTML或字符串,它仍然是HTML,沒關係。正如@Alnitak所說,* regexps不是答案*,我完全同意他的看法。現在我想問你的問題如下:爲什麼你想要一個明顯有效的HTML片段(缺少一個'alt'屬性是有效的)變成一個無效的片段(通過使用'tmpSrc'屬性)? –

回答

2

如果這是你的控制,而不是一串HTML代碼的網頁檢索,然後就可以放心地確實使用正則表達式。要改變<img src=所有出現到<img tmpSrc=,您可以使用此操作:

var str = "<img src='path.jpg'/>"; // whatever your source string is 
str = str.replace(/<img src=/gi, "<img tempSrc="); 

什麼其他海報一直在說的是,正則表達式不善於從網頁檢索到的HTML使用,因爲不同的瀏覽器返回不同的形式的HTML,所以它很難可靠地匹配它。但是,如果你想要替換的字符串是在你自己的控制下,並且你可以知道它的格式,那麼這個正則表達式應該可以正常工作。使用DOM

input = " <img src='path.jpg'/>"; 
output = input.replace("src","tmpSrc"); 

+0

感謝您的正則表達式..它得出了結論:) – samccone

1

操縱HTML與正則表達式是容易出錯。

如果你能吃苦,包括jQuery的在你的頁面:

$('img').each(function() { 
    var src = this.src; 
    $(this).attr('tmpSrc', src).removeAttr(src); 
}); 
+0

使用jquery實際上將圖像src(s)加載到dom結構中:/那就是我想要解決的問題 – samccone

+0

@samccone如果DOM中沒有內容,現在的內容在哪裏? – Alnitak

+0

它是從一個ajax請求到第三方api – samccone

0
function replace() { 
    var images = document.getElementsByTagName('img'), 
     srcValue, 
     max 
     i; 

    for (i = 0, max = images.length; i < max; i++) { 
     srcValue = images[i].getAttribute('src'); 
     images[i].setAttribute('tmpSrc', srcValue); 
     images[i].removeAttribute('src'); 
    } 
} 
0

爲字符串

e = document.getElementById("theimg"); 
    e.tmpSrc = e.src; 
    e.removeAttribute("src");