2014-01-10 34 views

回答

0

table取出onclick它作爲onload添加到body

DEMO

或者,你可以使用window.onload,而不是把它直接在body

DEMO

0

問題是你有一個n onclick附加到調用setTDOnclickEvents的表上。所以,只有當用戶點擊表格時,纔會出現onclick。

你真正想要的是在頁面加載時綁定表格中的元素。使用jQuery你可以做...

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

沒有jQuery(就像這裏),你只需寫'document.onload = setTDOnclickEvents' – Rolf

0

更換

<body> 

通過

<body onload="setTDOnclickEvents()"> 

還有其他的方法來做到這一點,就像你可以只寫:

document.onload = setTDOnclickEvents; 

您的JavaScript

你需要將你的函數綁定到一個事件上,如果它在頭部內部,它就會被觸發。

我希望你的代碼根本不能工作,奇怪的是它的確如此。也許一些默認的行爲,不值得調查......

PS:我剛剛看到你正在爲表格添加click事件,所以這會解釋奇怪的行爲。是的,刪除它。

0

問題是,您在點擊表格元素時調用setTDOnclickEvents()。因此,在第一次點擊之前,您並未附加點擊事件。

相反,您可以將其移入正文onload屬性中。

您可以對此代碼進行一些其他改進,以使其更簡單和更新。如果有興趣,請告訴我,我很樂意提供幫助。

+0

乾杯! thnx :) – user3183024

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> 

另一種選擇是(如果你想要使用文件頭中的腳本),把所有內容都作爲window.onload

此外,通常嘗試避免依賴於將事件處理程序放入HTML元素本身中,而是在JavaScript內處理所有這些東西。

+0

我還考慮將您的腳本移出HEAD,並在BODY結束時作爲不良練習。 – Rolf

+0

你的推理是什麼? –

+0

更直覺然後推理,但我的直覺通常幫助我。它確實保留了HEAD中的所有「元數據」,這是我猜的HEAD。我認爲,如果內聯JavaScript是壞的,那麼這應該也是如此,畢竟它不是*,遠遠超過內嵌JavaScript在一個塊中連接... – Rolf

相關問題