2011-02-26 89 views
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <link href="StyleSheet.css" rel="stylesheet" type="text/css" /> 
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(document).ready(onLoad()); 

     function onLoad() { 
      alert($("#wcontrol_subtable0").attr('id')); 
     } 
    </script> 
    <title></title> 
</head> 
<body> 
    <form name="form1" method="post" action="Default.aspx" id="form1"> 
    <div id="wcontrol_pnlMenu"> 
     <table border="0"> 
      <tr> 
       <td> 
        <table id="wcontrol_subtable0" class="class1" cellspacing="0" cellpadding="0" border="0" 
         style="border-collapse: collapse;"> 
         <tr id="wcontrol_subtable0_th"> 
          <th> 
           Parameters 
          </th> 
         </tr> 
         <tr> 
          <td> 
          </td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
     </table> 
    </div> 
    </form> 
</body> 
</html> 

它看起来很正常,问题是警报方法出现“null”!!!! 我不知道这里发生了什么。Jquery attr('id')不工作

回答

3

你必须onLoad功能ready不叫它:

$(document).ready(onLoad); 
// no parenthesis ----^ 

否则你会的onLoad返回值传递给ready方法,即onLoad被调用,在DOM准备好之前。

+0

Maaaaan !!!你是英雄!那让我疯狂。谢谢菲利克斯! – Lug 2011-02-26 20:55:44

+1

@Lug:不客气:)请记住,函数是JavaScript中的第一类公民。你可以按名称引用它们。添加括号会调用它们。 – 2011-02-26 20:57:07

0

您在准备好的活动中使用返回值onLoad

这意味着onLoad函数被调用立即(找出returnv ALUE是什么),并且你正在寻找不存在(因为DOM该元素的元素尚未建造,那时间)。

关闭()以传递函数而不是其返回值。