1

我正在使用document.createElement("script");在我的 html 头部生成带有一些代码的脚本标记,单击按钮。整个代码:

    //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;
});

});

我注意到,每次我单击按钮时,head 中生成的脚本都会被更大的数字替换。是否有某种方式不会被替换,但在它的生成上,以前生成的脚本会保留下来,而新的脚本会在前面生成,例如落后于以前的脚本?

而且我不知道为什么,我的警报在第二次创建脚本后没有显示。我错过了什么还是什么?

这是 jsfiddle 的情况:http: //jsfiddle.net/dzorz/6F7jR/

4

2 回答 2

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

});
于 2013-07-10T12:43:42.863 回答
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;
});

});
于 2013-07-10T12:44:18.960 回答