我是JavaScript中的初学者。问题是只有当我点击两次文字时,代码才会起作用。我需要一样的,但只需点击一下。该代码是链接:Javascript两次点击 - 需要一个
http://jsbin.com/uTizoKe/1/edit?html,output
我真的很感激任何帮助。预先感谢
我是JavaScript中的初学者。问题是只有当我点击两次文字时,代码才会起作用。我需要一样的,但只需点击一下。该代码是链接:Javascript两次点击 - 需要一个
http://jsbin.com/uTizoKe/1/edit?html,output
我真的很感激任何帮助。预先感谢
问题是你有一个n onclick附加到调用setTDOnclickEvents的表上。所以,只有当用户点击表格时,才会出现onclick。
你真正想要的是在页面加载时绑定表格中的元素。使用jQuery你可以做...
$(function() {
setTDOnclickEvents();
});
更换
<body>
通过
<body onload="setTDOnclickEvents()">
还有其他的方法来做到这一点,就像你可以只写:
document.onload = setTDOnclickEvents;
您的JavaScript
你需要将你的函数绑定到一个事件上,如果它在头部内部,它就会被触发。
我希望你的代码根本不能工作,奇怪的是它的确如此。也许一些默认的行为,不值得调查......
PS:我刚刚看到你正在为表格添加click事件,所以这会解释奇怪的行为。是的,删除它。
问题是,您在点击表格元素时调用setTDOnclickEvents()
。因此,在第一次点击之前,您并未附加点击事件。
相反,您可以将其移入正文onload
属性中。
您可以对此代码进行一些其他改进,以使其更简单和更新。如果有兴趣,请告诉我,我很乐意提供帮助。
干杯! thnx :) – user3183024
移动你脚本标签到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>
另一种选择是(如果你想要使用文件头中的脚本),把所有内容都作为window.onload。
此外,通常尝试避免依赖于将事件处理程序放入HTML元素本身中,而是在JavaScript内处理所有这些东西。
没有jQuery(就像这里),你只需写'document.onload = setTDOnclickEvents' – Rolf