1

ユーザーが脚注を追加できる redactor.js のプラグインを開発しています。最終的に脚注はデータベースの別のテーブルに書き込まれますが、現時点ではこれはモックアップにすぎません。これは、より大きな大学プロジェクトの一部であり、この段階で機能しているように見えるだけで十分です。ちなみに私はJS初心者です。

コールバックを使用して関数を実行するカスタム ボタンをエディタに追加しました。ご覧のとおり、ボタンが押されるたびに fnCount 変数が 0 にリセットされます。最後の値を取得してインクリメントする方法がわかりません。ここで同様の問題がいくつか見られましたが、リダクター API を使用してこれを行っているため、どれもまったく同じではありませんでした。

ここに私のコードがあります:

// Insert footnote plugin

insertFootnote = function(){
    var fnCount = 0
    var fnAnchor = '<a href="#fn-' + ++fnCount + '"><sup>' + fnCount + '</sup></a>&nbsp'
    $('.edit').execCommand('inserthtml', fnAnchor);
}


// Initialise editor

$(document).ready(
    function()
    {       
        $('.edit').redactor({
            focus: true, 
            buttonsAdd: ['|', 'footnote', 'reference'], 
            buttonsCustom: {
                footnote: {
                    title: 'Insert footnote', 
                    callback: insertFootnote 
                },

            }
        });
    }
);

ここに例を貼り付けました: http://fclty.org/redactor/黒いボタンは、役に立たない脚注を追加するボタンです。白いボタンは無関係ですが、同様に役に立たない機能であるため、無視できます。

私は今、どこにも行かないアンカーを挿入しているだけだと気づきましたが、一歩ずつですよね?;-)

4

1 に答える 1

1

質問を正しく理解している場合は、変数を外部スコープに移動する必要があります。

var fnCount = 0

insertFootnote = function(){    
    var fnAnchor = '<a href="#fn-' + ++fnCount + '"><sup>' + fnCount + '</sup></a>&nbsp'
    $('.edit').execCommand('inserthtml', fnAnchor);
}

これで、変数は呼び出されるたびに0に設定されるのではなく、最初は0に設定され、呼び出しごとに増分されます。

値が呼び出された要素に関連付けられる必要がある場合は、data代わりにを使用して保存できます。

于 2012-08-01T21:27:25.943 に答える