2013-07-10 2 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; 
}); 

});