0

私は周りを検索しましたが、答えを見つけることができませんでした。これは私の問題/質問です:

次のように 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 ステートメントで発生しています)。

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

( l パラメータは動的であることに注意してください)。しかし、元の URL に戻すこともできません。

そのURLの文字列内を検索するにはどうすればよいですか(これらの追加のパラメーターをすべて使用するか、使用しないかによって異なります)、それを置き換えます。

私はそれについて無知ですが、皆さんが私を助けてくれたり、正しい方向に少しでも向けてくれたりしたら、それはとても素晴らしいことです.

つまり、これは私が達成したいことです:

  • 私はこのURLを持っています:http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}
  • このURLに変更したい:http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}&c=1&i5
  • 次に、URLを次のようにすることはできません。http://urlToSite/index.php?route=ne/unsubscribe&amp;uid={uid}&amp;key={key}&c=1&i=2
  • しかし、URLを通常に戻すこともできません(これは静的変数内でもできるので、大したことではありません...)

-ところで-悪い英語でごめんなさい;)

編集

以下は問題を解決する良い方法だと思いますか???

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);
4

2 に答える 2

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 を取得します。

于 2013-07-29T20:50:57.057 に答える
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");

Are you just doing a find and replace (while storing your current variables)?

If you need things to be more dynamic, check out regular expressions http://www.regular-expressions.info/reference.html

于 2013-07-29T20:45:23.287 に答える