2011-03-07 44 views
0
alert($('#myTableHeader1').width()); 
alert($('#myTableHeader1').outerWidth()); 
alert($('#myTableHeader1').innerWidth()); 

以上都不是。即使我有帶ID的選擇元素不起作用

<th id="myTableHeader1" width="12%"> testest</th> 

我得到的錯誤

空爲空或不是對象

+0

你加載jQuery? – lonesomeday 2011-03-07 17:19:23

+0

@linesomeday是的,我有。我的頭標中有以下內容: code511788465541441 2011-03-07 17:19:47

+0

@user在哪一行是錯誤? – 2011-03-07 17:22:47

回答

0
jQuery(function(){ 

    alert(jQuery('#myTableHeader1').width()); 
    alert(jQuery('#myTableHeader1').outerWidth()); 
    alert(jQuery('#myTableHeader1').innerWidth()); 

}); 

問題是你是否運行創建的節點,甚至在你的JavaScript代碼。所以你可以在底部添加JavaScript,或者在dom準備好後運行你的代碼。

無論傳遞到jQuery奔跑在DOM準備

jQuery(function(){ 

    // codes written here runs at dom ready 

}); 

注意:下面寫的Type1和Type2是一回事

1型

jQuery(function(){ 

}); 

2型

$(document).ready(function() { 


}) ; 

What is the difference between these jQuery ready functions?

+3

您還需要解釋。 – SLaks 2011-03-07 17:20:30

+0

所以你告訴他們等待DOM準備就緒。聽起來是對的。或者將腳本放在頁面底部。 – Vinnyq12 2011-03-07 17:22:51

+0

@上:做到了! – 2011-03-07 17:23:26

0

你可能會試圖在DOM存在之前,他們訪問的元素。要做到這一點的方法是聽取window.onloaddocument.ready事件。 jQuery讓這很容易爲標準工廠方法可以採取一個函數來自動地綁定到document.ready事件:

jQuery(function($){}); 

這具有一個額外的好處,它可以用來別名jQuery$以允許的相容性使用$而不必擔心noConflict

jQuery(function($){ 

    alert($('#myTableHeader1').width()); 
    alert($('#myTableHeader1').outerWidth()); 
    alert($('#myTableHeader1').innerWidth()); 

}); 

你最好不要開始使用console.log代替alert你可以使用Firebug或內置在Opera或Chrome控制檯。

使用的console.log你應該檢查console存在:

if (window.console) 
{ 
    console.log(
    $('#myTableHeader1').width(), 
    $('#myTableHeader1').outerWidth(), 
    $('#myTableHeader1').outerWidth() 
); 
} 

這可能是也可能不是你要尋找的解決方案。告訴你需要將HTML和JavaScript一起發佈。它可能與拼寫錯誤或錯誤的html語法一樣簡單。

+1

訪問DOM元素之前,他們不會導致OP正在獲取的錯誤。 – user113716 2011-03-07 17:34:36

0

鑑於你有console可用,這應該工作。

$(document) 
    .ready(function(){ 
     console.log(
      $('#myTableHeader1').width(), 
      $('#myTableHeader1').outerWidth(), 
      $('#myTableHeader1').outerWidth() 
     ); 
    }); 
+0

什麼是e參數?你沒有用'.ready()'得到'event'參數。 – user113716 2011-03-07 17:33:49

+1

習慣的力量;糾正。謝謝**帕特里克dw ** – Dan 2011-03-07 17:35:10

0

我認爲jQuery的不會讓您日,如果它不是在表

所以嘗試一下本作的html:

<table> 
<tr> 
    <th id="myTableHeader1" width="12%"> testest</th> 
</tr> 
</table> 

,這爲您的jQuery:

$(document).ready(function() { 
alert($('#myTableHeader1').width()); 
alert($('#myTableHeader1').outerWidth()); 
alert($('#myTableHeader1').innerWidth()); 
}); 

這裏是一個工作示例: here