JavaScript中的HTML“onclick”事件(在表格中)

时间:2012-07-05 14:28:53

标签: javascript html html-table onclick document.write

我正在尝试将我用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 个答案:

答案 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>

请检查并告知我们。