用Javascript替换字符串中的html

时间:2013-07-29 20:29:59

标签: javascript jquery html hyperlink replace

我已经四处寻找,但没有成功找到答案。这是我的问题/问题:

我从CKEDITOR获得了一个页面:

var oldText = CKEDITOR.instances.message.getData();

到目前为止,这么好。字符串包含这样的内容:

<table cellpadding="0" cellspacing="0" width="100%">
    <tbody>
        <tr>
            <td align="left"
                style="padding-top: 24px; padding-right: 0px; padding-bottom: 0px; padding-left: 28px;"
                valign="top">
                <!--//logo//-->
                <a href="urlToSite" target="_blank"><img alt=""
                    src="urlToSite/image/data/Logo/logog7.png" /></a>
            <!--//end logo//-->
            </td>
            <td align="right"
                style="padding-top: 20px; padding-right: 28px; padding-bottom: 0px; padding-left: 0px;"
                valign="top">
                <div style="font-size: 18px; color: rgb(53, 115, 173);">Monday, 29
                    July 2013</div>

                <div style="font-size: 11px; color: rgb(53, 115, 173);">
                    <a
                        href="http://urlToSite/index.php?route=ne/subscribe&amp;uid={uid}&amp;key={key}"
                        style="text-decoration: none; color: rgb(53, 115, 173);">Subscribe</a>&nbsp;|&nbsp;<a
                        href="http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}"
                        style="text-decoration: none; color: rgb(53, 115, 173);">Unsubscribe</a>&nbsp;|&nbsp;<a
                        href="urlToSite"
                        style="text-decoration: none; color: rgb(53, 115, 173);">Visit our
                        site</a>
                </div>
            </td>
        </tr>
    </tbody>
</table>

现在我想将取消订阅链接更改为类似的内容(这是在switch语句中的hapening):

http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}&c=1&l=12

(注意,l参数是动态的)。 但我也不想让他再次成为原始网址。

我如何在字符串中搜索该URL(包含那些额外的参数,或者不依赖于这些参数)并替换它。

我很清楚这一点,但如果你们能帮助我,或者甚至指向一个正确的方向,那将是非常好的。

所以在排序中,这就是我想要实现的目标:

  • 我有这个网址:http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}
  • 我想将其更改为此网址:http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}&c=1&i5
  • 然后我不能使网址像这样:http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}&c=1&i=2
  • 但我也不能将URL恢复正常(这也可以在静态变量中进行,所以这不是什么大问题......)

-btw-对不好的英语抱歉;)

修改

你们认为以下是解决问题的好方法吗?

1: I save the default URL in an string
2: I do an replace with the default URL on the oldText, and insert the new URL
3: I save the new URL in an difrent string
4: Next time i do an replace with the saved new URL on the oldText and insert an newer URL
5: and save that and so on...

EDIT2 我现在使用的代码如下(答案来自Woody

var oldText = CKEDITOR.instances.message.getData();
var div = document.createElement("div");
div.innerHTML = oldText;
var a = div.querySelector('a[href^="http://www.gospel7.com/index.php?route=ne/unsubscribe"]');
$(a).attr("href", "http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}&c=1&l=12/")
console.log(a);

2 个答案:

答案 0 :(得分:1)

获取该HTML字符串并将其放入内存div中。所以你可以操纵它。

var div = document.create element(“div”);

div.innerHTML = oldText;

现在你有了一个可以查询锚标签的div。

 var a = div.querySelector("a[href^=<start of URL you want to change] ");

现在将锚点上的href设置为你想要的。完成后获取div的innerHTML。

答案 1 :(得分:0)

var oldURL = "http://urlToSite/index.php?route=ne/subscribe&amp;uid={uid}&amp;key={key}";
var newURL = "http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}&c=1&l=12"
var newText = oldText.replace("oldURL", "newURL");

您是在进行查找和替换(在存储当前变量时)吗?

如果您需要更具动态性,请查看正则表达式http://www.regular-expressions.info/reference.html