使用jQuery插入包含函数的脚本?

时间:2011-10-20 01:17:45

标签: javascript jquery

我试图动态地将一行JavaScript添加到div中,但是当我运行.append()调用时,浏览器看到该行中的function()调用是实际函数而不是实际函数字符串:

var startDate = 0
...
function insertCalendar(){
    var divName = "div[name=StartDate" + startDateNum + "]";
    $(divName).append("<script>Calendar.setup({ trigger : 'StartDate" + startDateNum + "', inputField : 'StartDate" + startDateNum + "', onSelect : function() { this.hide() } });</script>");
    startDateNum++;
}

在调用.append()时,JavaScript控制台会返回“Uncaught SyntaxError:意外的输入结束”,而且似乎搞乱了insertCalendar函数。我很确定我没有错过引用...

请告诉我这是否过于含糊,因为这是我的第一个问题。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以创建脚本标记,然后添加javascript。

  var jstag=document.createElement('script');
  jstag.setAttribute("type","text/javascript");
  jstag.appendChild(document.createTextNode(" Javascript code goes here  "));
  document.appendChild(jstag);

答案 1 :(得分:0)

得益于Anzz的答案,将其与一些AJAX混合:

var startDateNum = 0;
...
function setNewCal(){
var url = "getCal.php?startDate=" + startDateNum;
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = addCalendar;
xmlHttp.send(null);
}

function addCalendar(){
var divName = "StartDate" + startDateNum + "Div";
var response = xmlHttp.responseText;
if (xmlHttp.readyState == 4){
    var calscript = document.createElement("script");
    calscript.setAttribute("type", "text/javascript");
    calscript.appendChild(document.createTextNode(response));
    document.getElementById(divName).appendChild(calscript);
    startDateNum++;
    }
}