Javascript两次点击 - 需要一个

时间:2014-01-10 19:04:09

标签: javascript

我是JavaScript的初学者。问题是代码仅在我单击文本两次时才起作用。我需要相同,但只需点击一下。代码在链接上:

http://jsbin.com/uTizoKe/1/edit?html,output

我真的很感激任何帮助。提前谢谢

5 个答案:

答案 0 :(得分:1)

脚本标记移动到HTML正文的末尾,然后从标记中删除 onclick 处理程序。这有效(这里是jsbin):

<script>
    document.getElementsByTagName('table')[0].onclick = setTDOnclickEvents();

    function setTDOnclickEvents() {
        var allTDs = document.getElementsByTagName("TD");
        for (var i in allTDs) {
            allTDs[i].onclick = function () {
                txtCellData.value = this.innerHTML;
            }
        }
    }
</script>

另一个选项(而不是基于点击调用你的函数)就是这样做:

<script>
        var allTDs = document.getElementsByTagName("TD");
        for (var i in allTDs) {
            allTDs[i].onclick = function () {
                txtCellData.value = this.innerHTML;
            }
        }
</script>

另一个选项是(如果你想使用文档的 head 中的脚本),将所有内容作为函数放在 window.onload 中。

此外,通常最好避免依赖于将事件处理程序放在HTML元素本身中,而是处理JavaScript中的所有内容。

答案 1 :(得分:0)

onclick移除table,并将其onload添加到body

DEMO

或者,您可以使用window.onload而不是直接将其放在body

DEMO

答案 2 :(得分:0)

问题是你有一个onclick附加到调用setTDOnclickEvents的表。因此,只有当用户点击表格时才会发生onclick。

您真正想要的是在页面加载时绑定表格中的元素。使用jQuery你可以做...

$(function() {
setTDOnclickEvents();
});

答案 3 :(得分:0)

替换

<body>

通过

<body onload="setTDOnclickEvents()">

还有其他方法可以做,就像你可以写:

document.onload = setTDOnclickEvents;

在JavaScript中

你需要将你的函数绑定到一个事件,以便它被触发它,如果它在头部。

我希望你的代码根本不起作用,奇怪的是它确实如此。也许某些默认行为,不值得调查...

PS:我刚刚看到你正在将表的click事件绑定到函数,这样就可以解释奇怪的行为。是的,删除它。

答案 4 :(得分:0)

问题是你在点击表格元素时正在调用setTDOnclickEvents()。因此,在您第一次点击之前,您不会附加点击事件。

相反,您可以将其移动到正文onload属性中。

您可以对此代码进行一些其他改进,以使其更简单,更新。如果有兴趣,请告诉我,我很乐意提供帮助。