2013-07-29 40 views
0

目前我正在處理我的個人投資組合,並且遇到了一個問題,我找不到答案。首先,我的網頁基於主框架工作,這意味着用戶不是通過更改頁面來導航,而是通過更改iframe中顯示的頁面。其次,用戶必須做出選擇(要看哪個畫廊),這必須改變iframe。我所做的是,一旦網頁已經加載了iframe中的頁面,它會運行一個while循環來持續檢查一個值是否已經改變(這個值根據選擇的庫而改變)。然而,鉻控制檯給我一個錯誤是:「未捕獲TypeError:無法調用未定義的方法'getElementById'」。這裏是在主機的JavaScript其中誤差是發生:(順便說一下「設置」是用於存儲值的元素)iFrame在Javascript中被調用時未定義

function design() 
     { 
      document.getElementById('oth1').src = "frames/designs.htm"; 

      var p = document.getElementsByName('oth1').document.getElementById('set') 

      while (p == "0") 
      { 
       if (p > "0") 
       { 
        document.getElementById('oth1').src = "frames/"+ p +".htm"; 
       } 
      } 
     } 

下一步是的IFRAME文檔的整個代碼:

<!DOCTYPE HTML> 

<html> 

<head> 
    <title> 
     My Portfolio 
    </title> 
    <script> 

     function skipper() 
     { 
      document.getElementById('set').value = "1"; 
     } 

     function blurb() 
     { 
      document.getElementById('set').value = "2"; 
     } 
    </script> 

    <link rel="stylesheet" type="text/css" href="css/designs.css"> 
</head> 

<body> 
    <table style="width:1243px;border:0;"> 

     <tr> 
      <td colspan="2" class="push"> 
      </td> 
     </tr> 

     <tr> 
      <td width="180px"> 
       <p class="title"> Designs: </p> 
      </td> 
      <td> 
      </td> 
     </tr> 

     <tr> 
      <td id="set" value="0" colspan="5"> 
       <hr> 
      </td> 
     </tr> 

     <tr> 
      <td style="width:213px"> 
      </td> 
      <td style="width:213px"> 
       <embed class="vid_quick" src="animations/skipperanimation.mov" width="213" height="160" autoplay="true" controller="false" loop="true" pluginspage="http://www.apple.com/quicktime/download/"> 
       </embed> 
      </td> 
      <td style="width:213px"> 
       <embed class="vid_quick" src="animations/blurbanimation.mov" width="213" height="160" autoplay="true" controller="false" loop="true" pluginspage="http://www.apple.com/quicktime/download/"> 
       </embed> 
      </td> 
      <td style="width:213px"> 
      </td> 
      <td style="width:213px"> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      </td> 
      <td> 
       <p class="text"> 
        <p class="clickme" onclick="skipper()" id="skipper">Skipper</p> 
       </p> 
      </td> 
      <td> 
       <p class="text"> 
        <p class="clickme" onclick="blurb()" id="blurb">Blurb</p> 
       </p> 
      </td> 
     </tr> 
    </table> 
</body> 
</html> 

請你能幫我解決問題,所以我可以改變iframe來顯示合適的畫廊。

非常感謝! :)

+0

使用'jquery'。代碼將很簡單。 –

+0

不是每個人都希望使用類似jQuery的庫的開銷 – Lochemage

回答

1

您正在使用getElementsByName('oth1')而不是getElementById('oth1')。第一個函數實際上返回一個包含給定名稱而不是一個元素的所有元素的數組。