0

我需要存储一些 javascript 语句,以便稍后在撤消/重做机制中实现。

我的陈述包括设置contentdiv 的 HTML 和编辑全局变量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), 以便同时执行 the.html()i=3语句。

但我意识到eval()有问题。因此,在保留statements变量中的两个(并且可能还有更多)javascript 语句的同时,我只想提取$('#content').html().

所以我想要一个正则表达式从变量中提取statements,只有返回的$('#content').html()内容,即我在 中的内容storedcontent。这样,我可以直接做,而不是使用 eval$('#content').html(storedcontent);

我知道我可以轻松地使用子字符串,但我想知道如何使用正则表达式来做到这一点。

我试图编辑这个问题,但我认为它可能仍然令人困惑。为了简化,也许我只是在问,如何使用正则表达式来捕获两个不同子字符串之间的字符串,在这种情况下$('#content').html();

4

1 回答 1

0

我真的不明白你为什么不使用存储内容,但无论如何。

'i' 变量里面是什么?如果它是一个整数,那么 RegExp 应该是:

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