2015-02-10 58 views
-3

我目前在.hta文件中寫了一點(html & javascript-)應用程序,但不知何故,document.getElementById似乎沒有任何返回(未定義)雖然在.hta應用程序中執行,但是當粘貼到jsfiddle時,代碼工作正常。JavaScript代碼在jsfiddle中工作,但不在.hta文件中:getElementById返回undefined

<!DOCTYPE html> 
<html> 
<head> 
    <script> 
    ... 
    (function(){loadDataFromFile();})(); 
    function loadDataFromFile(){   
     ...  
     try { 
      ... 
      for(var i = 0; i < tmpReqs.length; i++){ 
       ... 
       addHTMLReq(i); 
      } 
     }catch(Err){ 
      alert("File content contains errors.\n"+Err.message); 
     } 
    } 

    function addHTMLReq(reqID){ 
     var req = reqs[reqID]; 
     if(!req) return; 
     var contentElement = document.getElementById("main_table"); 
     alert(contentElement.innerHTML); //To debug, already fails here. 
     var tr = document.createElement("tr"); 
     tr.id = req.id; 
     var td_0 = document.createElement("td"); 
     td_0.id = "date"; 
     td_0.innerHTML = req.day + "/" + req.month + "/" + req.year; 
     tr.appendChild(td_0); 
     var td_1 = document.createElement("td"); 
     td_1.id = "source"; 
     td_1.innerHTML = reqSources[req.source]; 
     tr.appendChild(td_1); 
     var td_2 = document.createElement("td"); 
     td_2.id = "requirement"; 
     td_2.innerHTML = req.requirement; 
     tr.appendChild(td_2); 

     contentElement.appendChild(tr); 
    } 
    </script> 
</head> 
<body> 
    <div id="category_definition"> 
     <category id="cat0" name="My Category 1" topCat="none" /> 
    </div> 

    <div id="content"> 
     <div id="categories"> 

     </div> 
     <table id="main_table"> 
      <tr> 
       <th id="date">Date</th> 
       <th id="source">Source</th> 
       <th id="requirement">Description</th> 
      </tr> 
      <tr id="100"> 
       <td id="date">28/01/2015</td> 
       <td id="source">src</td> 
       <td id="requirement">Lorem Ipsum dolores est</td> 
      </tr> 
     </table> 
    </div> 
</body> 
</html> 

我省略了無用的部分代碼。所有使用的變量都是正確定義的,唯一的問題在於document.getElementById,createElement等方法。

有誰知道這個問題可能是什麼?

+1

您嘗試讓它之前吃比薩餅。當您嘗試引用它時,該元素不會被創建。將腳本添加到正文中的HTML之後或將其加載到文檔準備就緒之後。 – epascarello 2015-02-10 21:06:50

+1

將您的

3

您的JavaScript在DOM加載之前觸發,所以當它尋找document.getElementById("main_table");時,它返回undefined。

相反,移動你的JavaScript下方的頁面,關閉標記之前,像這樣:

<html> 
    <body> 
     <div id="main_table"></div> 
     <script>doStuffHere()</script> 
    </body> 
</html> 
+0

正如你的評論的一個旁註折衷主義者的回答:這是一個_HTA_問題,即使在使用IE11運行HTA時,在所使用的文檔模式(IE7)中,「attachEvent」也能正常工作。 – Teemu 2015-02-10 22:20:11

相關問題