2016-04-13 71 views
0

想象我们有一个变量时img标签位于JavaScript的的Javascript查找和替换SRC变量

var html = "<html>...<img src="a"></img>...<a><img src="b"></img></a></html>" 

我们从来不知道。我们没有任何ID。他们只有不同的src,我们知道这src,因为我们有他们存储在数据库中。

如何编写一个方法,该方法将从上面定义的'html'变量中获取每个html内容,并在那里仅更改src's。例如,如果我知道src的值为'a',那么我想要调用一些方法来写入'c'而不是'a'等等。有了一些循环,我只想更改src's

有什么想法?

+0

使用正则表达式进行匹配和替换 – boomcode

+0

@boomcode NOOOOOOOOO! [托尼小马...他来](http://stackoverflow.com/a/1732454/519413) –

+0

@RoryMcCrossan解析和替换似乎是不同的东西,没有关于在这个问题解析HTML标签,它是关于将一​​个已知的子串替换为另一个。这与RegExp没有任何关系,并且OP表示他知道这些值,那么他可以简单地将其替换为 – teran

回答

1

从你的问题,你知道当前src。

我们知道这SRC,因为我们有他们存储在数据库中

curSources存储当前src的,并具有新src'在newSources阵列S,可以遍历字符串替换每img标签

var html = '<html>...<img class="someclass" src="a"></img>...<a><img src="b"></img></a></html>'; 
 
var count = (html.match(/<img/g) || []).length; //number of img tags 
 

 
var curSources = ['a','b']; 
 
var newSources = ['c','d']; 
 

 
for (i=1; i<=count; i++) { 
 
    a = html.split('<img', i).join('<img').length; //index of i'th occurance of <img 
 
    b = html.indexOf('src',a);      //index of i'th occurance of src 
 
    c = html.substring(a,b+5);      //split from <img to src=" 
 
    html = html.replace(c+curSources[i-1]+'"',c+newSources[i-1]+'"'); 
 
} 
 

 
alert(html);

的SRC
+0

谢谢。我怎么能foreach所有的img标签?因为你的代码准备在'img src = ...'中,有时在我的代码中有一些属性,我想调用另一个方法(用src调用)并返回另一个src,它将放入ti – kamilws

+0

@kamilws更新后的代码片段?检查它 – Munawir

1

将该字符串放入jQuery对象中后,就可以使用标准的DOM遍历方法。试试这个:

var html = '<html>...<img src="a"></img>...<a><img src="b"></img></a></html>'; 
$(html).find('img[src="a"]').prop('src', 'c'); 

感谢@Tushar指出你还需要注意你在HTML字符串中使用的引号。如果在字符串中使用",则应使用'对其进行分隔,如上例所示。

+0

如果html是一个字符串变量,也可以使用旧的plain替换'html.replace('img src =“a”','img src =“something_else”');'。 – Xiflado

+1

@Xiflado是真实的,但那会破坏''。以上是更强大 –