2011-07-12 106 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");