我正在制作一个简单的网络应用。在一个特定的页面中,我必须动态生成一个列表,并在列表中的每个项目后都有一个日历。
以下是代码:
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"
。怎么了?我该怎么办?
答案 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。