0

後で元に戻す/やり直しメカニズムを実装するために、いくつかの JavaScript ステートメントを保存する必要があります。

私のステートメントは、div の HTML を設定しcontent、グローバル変数を編集することで構成されていますi。それぞれ独自のインライン スタイル属性を持つ$('#content')多数の要素で構成できます。divs以前は、次のような複数のステートメントを保存していました。

storedcontent = $('#content').html();
statements = "$('#content').html("+storedcontent+"); i = " +i+ "; ";

そしてeval(str);、元に戻すボタンが押されたときに を使用します。statements変数に格納される可能性のあるものの例は次のとおりです。

content.html('<div id="left" class="margin-line" style="top: 15px; left: 15px; width:1px; height: 317px; border-right:1px dotted gray;"></div>     <div id="top" class="margin-line" style="top: 14px; left: 16px; height:1px; width: 569px; border-bottom:1px dotted gray; "></div>'); 
i = 3;

(.html() ステートメントの後に変数の割り当てがあることに注意してください)。

したがって、私が以前に行っていたのは、ステートメントとステートメントeval(statements)の両方を実行するために、単純に を実行することでした。.html()i=3

しかし、私eval()は問題があることに気づきました。statementsそのため、変数に2 つ (さらに多くの可能性があります) の JavaScript ステートメントを保持しながら、 $('#content').html().

だから私は正規表現が変数から抽出することを望んでstatements$('#content').html()ますstoredcontent. そうすれば、eval を使用する代わりに、直接行うことができます$('#content').html(storedcontent);

部分文字列を簡単に使用できることはわかっていますが、正規表現を使用してそれを行う方法を知りたいです。

質問を編集しようとしましたが、まだ混乱する可能性があると思います。簡単にするために、おそらく私は、正規表現を使用して、2 つの異なる部分文字列の間の文字列をどのようにキャプチャできるかを尋ねているだけ$('#content').html(です);

4

1 に答える 1

0

なぜあなたが storedcontent を使用していないのかよくわかりませんが、とにかく。

「i」変数の中身は? 整数の場合、RegExp は次のようになります。

var storedcontent2 = statements.match(/#content\'\)\.html\((.*)(\);\s*i\s*=\s*\d+\s*;\s*)$/)[1];
于 2013-01-12T07:49:52.107 に答える