-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等方法。
有誰知道這個問題可能是什麼?
您嘗試讓它之前吃比薩餅。當您嘗試引用它時,該元素不會被創建。將腳本添加到正文中的HTML之後或將其加載到文檔準備就緒之後。 – epascarello 2015-02-10 21:06:50
將您的
您的JavaScript在DOM加載之前觸發,所以當它尋找
document.getElementById("main_table");
時,它返回undefined。相反,移動你的JavaScript下方的頁面,關閉標記之前,像這樣:
來源
2015-02-10 21:09:27 ndugger
正如你的評論的一個旁註折衷主義者的回答:這是一個_HTA_問題,即使在使用IE11運行HTA時,在所使用的文檔模式(IE7)中,「attachEvent」也能正常工作。 – Teemu 2015-02-10 22:20:11