执行并动态查看javascript函数的结果

时间:2013-12-24 08:53:28

标签: javascript jquery

我正在制作一个简单的网络应用。在一个特定的页面中,我必须动态生成一个列表,并在列表中的每个项目后都有一个日历。

以下是代码:

for (var i = 0; i < goalsObj.length; i++) {
    var node = document.createElement("li");
    node.setAttribute("draggable", "true");
    node.setAttribute('id', 'g' + i);
    node.addEventListener('click', function () {
        viewGoal()
    }, false);
    var textnode = document.createTextNode(goalsObj[i]);
    node.appendChild(textnode);
    var cal = "<script>calendar()</script>";
    var calen = document.createTextNode(cal);
    document.getElementById("sortable").appendChild(node);
    document.getElementById("sortable").appendChild(calen);
}

但问题是,不是计算和显示calendar()函数的输出,而是到处都是"script calendar() /script"。怎么了?我该怎么办?

3 个答案:

答案 0 :(得分:1)

使用

var calen = document.createElement("div");
document.getElementById("calen").innerHTML=calendar();

答案 1 :(得分:0)

var scriptElement = document.createElement('script');
scriptElement.type = 'text/javascript';
scriptElement.appendChild(document.createTextNode('calendar();'));

答案 2 :(得分:0)

您无需为此创建脚本元素。如果我理解正确,那么您只想显示calendar()的结果。所以你可以调用函数并将结果传递给createTextNode函数:

var calen = document.createTextNode(calendar());

您现在正在做的是创建一个字符串"<script>calendar()</script>",然后使用此字符串作为内容创建一个textnode。没有任何东西被执行,因为createTextNode只是这样做,它会创建一个TEXTnode。