2012-03-09 59 views
1

我無法使用getElementById和getElementsByClass。無法使用getElementById和getElementsByClass

我想要做的是隱藏過去> 6個月以及未來> 3個月的所有表格列。我認爲選擇,通過使用他們的類包含日期的表頭元素:

var elements = document.getElementsByClass('date_header');

這得到一個節點列表出來(正確的節點將顯示在一個的console.log()),但它似乎沒有是迭代的,即元素[0]是未定義和elements.length是0

作爲工作我周圍以爲選擇由ID的標題行,並且通過它的子節點迭代:

var element = document.getElementById('rent_log_table_header');

但是元素的內容爲空。

把我的頭髮拉出來!不知道問題是什麼。根據W3c驗證器,HTML是有效的。測試Safari 5.1.3,Firefox 10.0.2,& Chrome 17.0.963.78,document.getElementsByClass和document.getElementById均失敗。

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="generator" 
      content="HTML Tidy for Linux/x86 (vers 11 February 2007), see www.w3.org"> 
    <link rel='icon' 
      type='image/png' 
      href='PropertyManagement/Media/Images/favicon.png'> 
    <meta http-equiv='content-type' 
      content='text/html; charset=us-ascii'> 
    <script type='text/javascript' 
      src='PropertyManagement/Script/Common.js'> 
    </script> 
    <script type='text/javascript' 
      src='PropertyManagement/Script/Rent_Log.js'> 
    </script> 
    <link type='text/css' 
      rel='stylesheet' 
      href='PropertyManagement/Style/Common.css'> 
    <link type='text/css' 
      rel='stylesheet' 
      href='PropertyManagement/Style/Rent_Log.css'> 
    <title> 
     Rent Log 
    </title> 
</head> 
<body id='body' 
     onload='__init();'> 
    <div id='wrapper'> 
     <div id='content'> 
      <ul id='nav_property_specific' 
       class='nav'> 
       <li class='portfolio'> 
        <a href='?page=Portfolio'><span class='left'><span class='right'><span class='middle'> <span class='page_title'>Back to Portfolio</span></span></span></span></a> 
       </li> 
       <li class='property__information'> 
        <a href='?page=Property__Information&amp;pid=12345678'><span class='left'><span class='right'><span class='middle'> <span class='page_title'>34 
        Greenhill</span></span></span></span></a> 
       </li> 
       <li class='tenants'> 
        <a href='?page=Tenants&amp;pid=12345678'><span class='left'><span class='right'><span class='middle'> <span class='page_title'>Tenants</span></span></span></span></a> 
       </li> 
       <li class='rent__log'> 
        <a id='selected' 
         href='?page=Rent__Log&amp;pid=12345678' 
         name="selected"><span class='left'><span class='right'><span class='middle'> <span class='page_title'>Rent Log</span></span></span></span></a> 
       </li> 
       <li class='services'> 
        <a href='?page=Services&amp;pid=12345678'><span class='left'><span class='right'><span class='middle'> <span class='page_title'>Services</span></span></span></span></a> 
       </li> 
       <li class='documents'> 
        <a href='?page=Documents&amp;pid=12345678'><span class='left'><span class='right'><span class='middle'> <span class='page_title'>Documents</span></span></span></span></a> 
       </li> 
       <li class='logout'> 
        <a href='?page=Logout'><span class='left'><span class='right'><span class='middle'> <span class='page_title'>Logout</span></span></span></span></a> 
       </li> 
      </ul> 
      <div id='main'> 
       <form name='rent__log_form' 
         action='&amp;page=Rent__Log&amp;pid=12345678' 
         method='post' 
         id="rent__log_form"> 
        <table id='rent_log_table'> 
         <tr id='rent_log_table_header' 
          class='calendar_header'> 
          <td class='name_field'> 
           Name 
          </td> 
          <td> 
           Fees 
          </td> 
          <td> 
           Deposit 
          </td> 
          <td class='date_header' 
           data-numeric-date='01 2012' 
           data-col-num='0'> 
           Jan 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='02 2012' 
           data-col-num='1'> 
           Feb 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='03 2012' 
           data-col-num='2'> 
           Mar 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='04 2012' 
           data-col-num='3'> 
           Apr 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='05 2012' 
           data-col-num='4'> 
           May 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='06 2012' 
           data-col-num='5'> 
           Jun 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='07 2012' 
           data-col-num='6'> 
           Jul 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='08 2012' 
           data-col-num='7'> 
           Aug 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='09 2012' 
           data-col-num='8'> 
           Sep 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='10 2012' 
           data-col-num='9'> 
           Oct 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='11 2012' 
           data-col-num='10'> 
           Nov 2012 
          </td> 
          <td class='date_header' 
           data-numeric-date='12 2012' 
           data-col-num='11'> 
           Dec 2012 
          </td> 
         </tr> 
         <tr> 
          <td class='name_field'> 
           John Smith 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
         </tr> 
         <tr> 
          <td class='name_field'> 
           John Smuth 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
         </tr> 
         <tr> 
          <td class='name_field'> 
           John Smythe 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>Unpaid</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
          <td> 
           <span>-</span> 
          </td> 
         </tr> 
        </table> 
        <div class='button_container'> 
         <a href='#' 
          id='edit_payment_log' 
          class='button' 
          onclick='document.pressed="edit_payment_log"; Link.hyper("Rent__Log","&amp;pid=12345678");' 
          name="edit_payment_log">Edit Payment Log</a> 
        </div> 
        <div id='account_info_q' 
         class='question'> 
         <div id='account_info' 
          class='text_field_set_question'> 
          <label class='question_label'>Account Information</label> 
          <div> 
           <div id='account_info_bank_name_account_info' 
            class='text_field_region'> 
            <label>Bank Name</label><label id='bank_name_account_info' 
             class='text_field_locked'>-</label> 
           </div> 
           <div id='account_info_sort_code_account_info' 
            class='text_field_region'> 
            <label>Sort Code</label><label id='sort_code_account_info' 
             class='text_field_locked'>-</label> 
           </div> 
           <div id='account_info_account_number_account_info' 
            class='text_field_region'> 
            <label>Account Number</label><label id='account_number_account_info' 
             class='text_field_locked'>-</label> 
           </div> 
          </div> 
         </div> 
        </div> 
        <div class='button_container'> 
         <a href='#' 
          id='edit_payment_info' 
          class='button' 
          onclick='document.pressed="edit_payment_info"; Link.hyper("Rent__Log","&amp;pid=12345678");' 
          name="edit_payment_info">Edit Payment Information</a> 
        </div> 
       </form> 
      </div> 
      <div id='footer'> 
       <div id='footer_inside'> 
        Copyright &copy; 2011 Our Company Ltd.<br> 
        All rights reserved. 
       </div> 
      </div> 
     </div> 
    </div> 
</body> 
</html> 
+2

只是一個建議,但jquery會讓你更容易。 – mason81 2012-03-09 20:01:13

+0

與document.getElementsByClass('date_header')你需要定義的地方。示例var element = document.getElementsByClass('date_header')[0]; – 2012-03-09 20:02:37

回答

3

這次我們得到了一個節點列表出來(正確的節點在console.log()所示),但它似乎沒有可迭代的,即elements[0]是不確定的。代碼運行完畢,使日誌條目格式功能的代碼做記錄的運行不會減慢後

console.log('%s', elements)等多種形式將元素轉換爲字符串。由於節點列表是活動的,這可能意味着它顯示的元素與調用console.log時出現的元素不同。

http://www.w3.org/TR/DOM-Level-2-Core/core.html

NodeList並在DOM NamedNodeMap對象是活的;也就是說,底層文檔結構的更改會反映在所有相關的對象NodeListNamedNodeMap中。例如,如果DOM用戶獲得包含Element的子對象的NodeList對象,然後隨後向該元素添加更多子元素(或刪除子元素或修改它們),則這些更改將自動反映在NodeList中,而不會對用戶的一部分。

是否在元素解析之前運行腳本?如果是這樣,您需要在文檔加載時運行它。

+0

謝謝!這正是它的原因!將代碼添加到文檔onload按預期工作。 – 2012-03-09 20:11:21

+1

@BilalKhan,不客氣。'console.log'所做的延遲格式化的東西讓我浪費了令人沮喪的時間在圈子中運行:) – 2012-03-09 20:15:37

0

也許你想調用document.getElementsByClassName函數?欲瞭解更多信息,請看here。據我所知,它不是交叉瀏覽器,所以我建議你使用jQuery或其他框架來選擇和控制DOM元素。

+0

document.getElementsByClassName不幸地產生了完全相同的行爲。 – 2012-03-09 20:07:10