需要使用动态变量替换onclick属性中的String

时间:2014-03-11 02:21:27

标签: javascript regex replace

我要做的是替换一些位于URL字符串内的“占位符”文本,另一个字符串存储在javascript变量中。这个变量是根据用户的选择动态生成的,所以我不能只对硬盘进行硬编码。

到目前为止,这是我的代码:

var result_photo = "http://quizsocial.com/yahoo/this.jpg";
var sRegExphoto = new RegExp(result_photo);

$('a.facer').each(function() {
this.attributes.onclick.nodeValue=this.attributes.onclick.nodeValue.replace('result_photo_placeholder', sRegExphoto);
});

你也可以在http://jsfiddle.net/Ywa7j/1/

看到我的jsfiddle

这个小提琴看起来非常接近我,但是我被卡住的地方是我的javascript Regex位被替换为我的字符串继续让它的正则表达式分隔符设置在它周围。如果我可以摆脱我的Regex对象上的那些分隔符,我想我会做得很好。但是,我根本无法找到摆脱这些分隔符的方法。

请帮我解决这个问题!非常感谢。如果你有建议会让我远离我现在尝试这样做的方式,我也很乐意。

2 个答案:

答案 0 :(得分:1)

我的解决方案:

http://jsfiddle.net/Ywa7j/2/

说明

取代:       this.attributes.onclick.nodeValue=this.attributes.onclick.nodeValue.replace('result_photo_placeholder', sRegExphoto);

使用: $(this).attr('onclick',$(this).attr('onclick').replace('result_photo_placeholder',sRegExphoto));

你必须使用$(this)而不是“this”并使用attr方法设置一个新值。在您的情况下,将其设置为替换“result_photo_placeholder”的相同值。

答案 1 :(得分:0)

而是将字符串包装在RegExp对象中,将字符串传递给replace函数。

传递正则表达式对象时,它不会用于匹配模式,而是用作替换值。它会在其上调用其.toString()方法,为您提供带有正则表达式分隔符的字符串。由于您没有使用它来匹配模式,因此不需要将其转换为正则表达式。