2

我正在尝试将我用 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(..)

4

4 回答 4

3

至少可以说,您的 Javascript 编程风格是古老的。document.write是主要在几乎没有生成动态内容的通用方法时开发的功能。

因此,您应该使用类似的方法动态生成元素document.createElement,将内容附加到那里,然后使用现代方法(例如appendChild.

然后,您可以使用比传统方式更现代的方式附加事件侦听器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<9 使用了一个不同的方法叫做attachEvent,所以它变成了:

td.attachEvent("onclick", function() { ...
于 2012-07-05T14:38:11.157 回答
0

您可以使用函数setAttribute(Attribute, Value)修改 HTML 中的属性。

使用此功能,您可以生成单元代码并动态定义属性。

于 2012-07-05T14:36:37.423 回答
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/

于 2012-07-05T14:37:12.970 回答
0

你能试试下面的代码吗,如果它有效,那么让我知道我会给你一些更好的选择:-

<script>
   document.onload = function()
   {
       document.getElementById('r1c1').onclick = function()
       {
           getTicket(1,'plan',1);
       }
   }
</script>

请检查并让我知道。

于 2012-07-05T14:38:13.473 回答