我正在尝试将我用HTML编写的表转换为Javascript,因为我希望动态生成表(行数)。我遇到的主要问题是表中的单个单元格是可点击的,并打开另一个html页面。不幸的是,html“onclick”参数不适用于document.write
语句以下是HTML中表格单元格的示例:
<td id="r1c1" align="center" onclick="getTicket(1,'plan',1);"><script language="JavaScript">document.write(getDate(1,"plan", "r1c1")); </script></td>
这一行中的函数是预定义的并且有效,所以我不打算发布这些函数,但是想法是函数 getTicket(..)假设打开另一个html页面。
我的问题是如何让onclick在JavaScript中运行。我可以使用document.write命令在Javascript中创建单元格,但实际上并不知道如何使这些单元格可以运行函数 getTicket(..)。
答案 0 :(得分:3)
至少可以说,你的Javascript编程风格是古代。 document.write
是一个主要在几乎没有生成动态内容的常用方法时开发的函数。
因此,您应该使用document.createElement
等方法动态生成元素,将内容附加到那里,然后使用appendChild
等现代方法将元素附加到DOM。
然后,您可以使用比onclick
之类的传统方式更现代的内容来附加事件侦听器,例如addEventListener
。这是一个片段:
var td = document.createElement("td");
td.innerHTML = getDate(1, "plan", "r1c1");
td.addEventListener("click", function() {
getTicket(1, 'plan', 1);
});
row.appendChild(td);
我认为row
是您正在生成的表格的行。
不幸的是,IE&lt; 9使用了一种名为attachEvent
的不同方法,因此它变为:
td.attachEvent("onclick", function() { ...
答案 1 :(得分:0)
您可以使用函数setAttribute(Attribute, Value)修改HTML中的属性。
使用此功能,您可以生成单元格代码并以动态方式定义属性。
答案 2 :(得分:0)
你不应该使用document.write
向页面添加元素,这里有javascript函数:
var myCell = document.createElement('td');
myCell.setAttribute('id', 'r1c1');
myCell.setAttribute('align', 'center');
myCell.onclick = function () {
getTicket(1, 'plan', 1);
};
// myRow is the 'tr' you want this 'td' to be a child of.
myRow.appendChild(myCell);
查看实际操作:http://jsfiddle.net/teH7X/1/
答案 3 :(得分:0)
你可以试试下面的代码,如果有效,请告诉我,我会给你一些更好的选择: -
<script>
document.onload = function()
{
document.getElementById('r1c1').onclick = function()
{
getTicket(1,'plan',1);
}
}
</script>
请检查并告知我们。