1

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) {...}

正規表現による検索と置換機能を使用してこれを達成しようとしましたが、追加のために機能しませんでした。

これを達成する最も簡単な方法は何ですか?

4

1 に答える 1

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 Evaluate 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.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);

これは、括弧で囲まれた数値に一致するテキストを単純に置き換えます。

于 2012-06-13T15:05:41.723 に答える