我是JavaScript的初学者。问题是代码仅在我单击文本两次时才起作用。我需要相同,但只需点击一下。代码在链接上:
http://jsbin.com/uTizoKe/1/edit?html,output
我真的很感激任何帮助。提前谢谢
答案 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)
答案 2 :(得分:0)
问题是你有一个onclick附加到调用setTDOnclickEvents的表。因此,只有当用户点击表格时才会发生onclick。
您真正想要的是在页面加载时绑定表格中的元素。使用jQuery你可以做...
$(function() {
setTDOnclickEvents();
});
答案 3 :(得分:0)
替换
<body>
通过
<body onload="setTDOnclickEvents()">
还有其他方法可以做,就像你可以写:
document.onload = setTDOnclickEvents;
在JavaScript中
你需要将你的函数绑定到一个事件,以便它被触发它,如果它在头部。
我希望你的代码根本不起作用,奇怪的是它确实如此。也许某些默认行为,不值得调查...
PS:我刚刚看到你正在将表的click事件绑定到函数,这样就可以解释奇怪的行为。是的,删除它。
答案 4 :(得分:0)
问题是你在点击表格元素时正在调用setTDOnclickEvents()
。因此,在您第一次点击之前,您不会附加点击事件。
相反,您可以将其移动到正文onload
属性中。
您可以对此代码进行一些其他改进,以使其更简单,更新。如果有兴趣,请告诉我,我很乐意提供帮助。