我是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