在Dreamweaver中,我有一个很长的列表,如下所示:
.classname li:nth-of-type(1) {...}
.classname li:nth-of-type(23) {...}
.classname li:nth-of-type(111) {...}
等等。 我现在需要做的是为每个li:nth-of-type选择器添加1,因此它变为:
.classname li:nth-of-type(2) {...}
.classname li:nth-of-type(24) {...}
.classname li:nth-of-type(112) {...}
我试图通过regex搜索和替换功能来实现这一点,因为添加功能无法正常工作。
最简单的方法是什么?
答案 0 :(得分:1)
我没有内置的方法来执行您要求的操作。您必须在Dreamweaver中手动进行更改。
我擅长JavaScript,你可以使用Tom Muck的Evaluate JavaScript面板(http://www.communitymx.com/abstract.cfm?cid=270FB商业广告,但只有2美元我在CS5.5或6中并不厌倦,但它肯定在CS5中工作,应该在更高版本中工作),或Dreamweaver平台SDK(http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1009962#,虽然它说DW8和MX2004它应该在更高版本中工作,我确信我已将它安装到CS3中,并且刚刚测试过在CS6中它安装得很好,只是一个小问题,其中一些添加的菜单项放在一个命令 - >杂项菜单中,其中包含一个可以输入JavaScript并运行的命令。
那么,为什么要在这里提到JavaScript呢?好吧,Dreamweaver的可扩展性层构建为公开JavaScript API。这意味着您可以使用JavaScript操作文档。在这种情况下,请编辑文档以增加数字。
我刚刚使用Dreamweaver Platform SDK评估JavaScript命令在Dreamweaver CS6中测试了以下内容。
在代码视图中选择要增加的CSS选择器。 转到命令 - > SDK工具 - >评估JavaScript。 将后面的代码粘贴到文档中:
var dom = dw.getDocumentDOM();
var sel = dom.source.getSelection();
var src = dom.source.getText(sel[0], sel[1]);
var matches = src.match(/(\.classname li:nth-of-type\()(\d+)(\))/g);
var newSrc = src;
if(matches){
for(var i =0; i< matches.length; i++){
// note: the following code through the ending ; is all on one line
newSrc = newSrc.replace( matches[i], matches[i].replace(/(\.classname li:nth-of-type\()(\d+)(\))/, function(str, p1, p2, p3){return p1 + (parseInt(p2)+1) + p3} ) );
}
}
dom.source.replaceRange(sel[0], sel[1], newSrc);
单击“评估”按钮。你应该看到代码中的数字增加了。
注意:此代码使用正则表达式来查找您提供的特定CSS选择器,因此如果您有不同的CSS选择器,则需要在src.match()行以及newSrc中调整RegExp .replace()行。
为了使它更通用,您可能想尝试以下内容:
var dom = dw.getDocumentDOM();
var sel = dom.source.getSelection();
var src = dom.source.getText(sel[0], sel[1]);
var matches = src.match(/(\()(\d+)(\))/g);
var newSrc = src;
if(matches){
for(var i =0; i< matches.length; i++){
// note: the following code through the ending ; is all on one line
newSrc = newSrc.replace( matches[i], matches[i].replace(/(\()(\d+)(\))/, function(str, p1, p2, p3){return p1 + (parseInt(p2)+1) + p3} ) );
}
}
dom.source.replaceRange(sel[0], sel[1], newSrc);
这只是替换了与括号括起来的数字相匹配的任何文本。