2012-02-29 144 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);' ? (這是否工作?)。 – 2012-02-29 03:18:35

+0

@ user1082764:你的jsfiddle缺少'addForm()'函數聲明 – zerkms 2012-02-29 03:19:21

+0

希望這有助於:http://jsfiddle.net/JFCPB/8/ – 2012-02-29 03:35:55

回答

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);​