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

Use jQuery to insert a script which includes a function?

本文关键字:包含 一个 函数 脚本 jQuery 插入 使用      更新时间:2023-09-26

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

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: Unexpected end of input",这似乎与insertCalendar函数混淆了。我很确定我没有错过引用…

让我知道如果这是太模糊,因为这是我在这里的第一个问题。谢谢!

您可以创建一个script标记,然后添加javascript。

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

得到了答案感谢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++;
    }
}