2013-07-10 84 views
1

我正在使用document.createElement("script");生成腳本標記,並在我的html頭部添加了一些代碼,單擊按鈕。全部代碼:jQuery createElement(「script」)issue

//dynamic 
$(document).ready(function() { 


var AddButton  = $("#AddMoreBox"); //Add button ID 

var FieldCount=0; //to keep track of text box added 

var s = document.createElement("script"); 

$(AddButton).click(function (e) //on add input button click 
{ 
     FieldCount++; //text box added increment 

     s.type = "text/javascript"; 
     s.text= '$(function(){alert('+ FieldCount +')});'; 

     $("head").append(s); 

     x++; //text box increment 
return false; 
}); 

}); 

我注意到,每次點擊按鈕生成的腳本在頭部被替換爲更大的數字。有沒有一些方法可以讓它們不被替換,但是在上一代生成的腳本停留在哪一代並且新的代碼以前面的例子爲代價?

我不知道爲什麼,我的警報不會在第二次創建腳本後顯示。我錯過了什麼或什麼?

這裏的jsfiddle與情況:http://jsfiddle.net/dzorz/6F7jR/

回答

3

http://jsfiddle.net/N79tH/

你已經宣佈你的腳本元素的單擊處理程序之外,因此它被重用,移動處理器中的var s聲明得到你想要的效果。像這樣:

$(document).ready(function() { 

    var AddButton = $("#AddMoreBox"); //Add button ID 
    var FieldCount = 0; //to keep track of text box added 

    $(AddButton).click(function (e) //on add input button click 
    { 
     var s = document.createElement("script"); 
     FieldCount++; //text box added increment 
     s.type = "text/javascript"; 
     s.text = '$(function(){alert(' + FieldCount + ')});'; 
     $("head").append(s); 
     x++; //text box increment 
     return false; 
    }); 

}); 
+0

的感謝! – dzordz

1

:)你搖滾試試這個

http://jsfiddle.net/6F7jR/2/

//dynamic 
$(document).ready(function() { 


var AddButton  = $("#AddMoreBox"); //Add button ID 

var FieldCount=0; //to keep track of text box added 



$(AddButton).click(function (e) //on add input button click 
{ 
    var s = document.createElement("script");//use here because every time create new element 
     FieldCount++; //text box added increment 

     s.type = "text/javascript"; 
     s.text= '$(function(){alert('+ FieldCount +')});'; 

     $("head").append(s); 

     //x++; //text box increment because x is not defined 
return false; 
}); 

});