2012-02-29 23 views
0

私はここにfiddleグローバル変数をどのように増やすことができますか?

を持っているが、私のJSです:

$(document).ready(function() { 

    window.qNum = 0; 
    window.$oClone = $('#pq0').clone();  

    addForm(); 
}); 


$('.addForm').live('click', function addForm() { 
    var $clone = $oClone.clone().attr('id', 'pq' + qNum + 1); 
    // insert the new element after the last "duplicatable" input field 
    $('#pq' + qNum).after($clone); 
}); 

私は私の変数「QNUM」私の関数「addForm」の端部をインクリメントしようとしています。 これはIDをインクリメントして、プロジェクトの後半で内容を見つけやすくなります。

++ qNumを追加しようとしています。関数の最後にはスクリプトを壊していますが、追加しても実行されません。

Here私の変更は動作しません。

+0

あなたは必ずあなたがするわけではないです 'window.qNum = 0;'ではなく '新しい番号を使用する(0);' ? (それは働く?)。 –

+0

@ user1082764:あなたのjsfiddleには 'addForm()'関数宣言がありません – zerkms

+0

これはうまくいきます:http://jsfiddle.net/JFCPB/8/ –

答えて

1
var qNum = 0; 

$(document).ready(function() { 

    window.$oClone = $('#pq0').clone();  

    addForm(); 
}); 


$('.addForm').live('click', addForm); 

function addForm() { 
    var appendTo = $('#pq' + qNum); 
    qNum += 1; 

    var $clone = $oClone.clone().attr('id', 'pq' + qNum); 
    // insert the new element after the last "duplicatable" input field 
    appendTo.after($clone); 
}​ 

ドキュメントレディコールの外でqNumを宣言します。そして++はそれを正しくインクリメントするためインクリメントします。また、クリックリスナの外でaddFormを移動し、そう呼ばれるようにします。それが役に立てば幸い。

コピーをあなたのフィドルに貼り付けます。それが動作します。

0

他の関数のスコープで関数を宣言しています。つまり、clickイベントの外部にある関数は存在しません。このような何かをやって

$('.addForm').live('click', function addForm() { 
    var $clone = $oClone.clone().attr('id', 'pq' + qNum + 1); 
    // insert the new element after the last "duplicatable" input field 
    $('#pq' + qNum).after($clone); 
});​ 

が代わりに役立ちます:

function addForm() { 
     var $clone = $oClone.clone().attr('id', 'pq' + qNum + 1); 
     // insert the new element after the last "duplicatable" input field 
     $('#pq' + qNum).after($clone); 
    } 
$('.addForm').live('click', addForm);​