Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript代码在JSFIDLE中工作,但在.hta文件中不工作:getElementById返回未定义_Javascript_Html_Jsfiddle_Hta - Fatal编程技术网

JavaScript代码在JSFIDLE中工作,但在.hta文件中不工作:getElementById返回未定义

JavaScript代码在JSFIDLE中工作,但在.hta文件中不工作:getElementById返回未定义,javascript,html,jsfiddle,hta,Javascript,Html,Jsfiddle,Hta,我目前正在.hta文件中编写一个小的(html&javascript-)应用程序,但是document.getElementById在.hta应用程序中执行时似乎什么也不返回(未定义),但是当粘贴到jsfiddle中时,代码运行良好 <!DOCTYPE html> <html> <head> <script> ... (function (){loadDataFromFile();})(); function

我目前正在.hta文件中编写一个小的(html&javascript-)应用程序,但是document.getElementById在.hta应用程序中执行时似乎什么也不返回(未定义),但是当粘贴到jsfiddle中时,代码运行良好

<!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>

... 
(函数(){loadDataFromFile();})();
函数loadDataFromFile(){
...     
试一试{
...
对于(变量i=0;i
我省略了代码中无用的部分。使用的所有变量都已正确定义,唯一的问题在于document.getElementById、createElement等方法


有人知道问题出在哪里吗?

用烹饪术语来说:你在做比萨饼之前试着把它吃掉


尝试引用元素时未创建该元素。在主体中的HTML之后添加脚本,或者在文档就绪或窗口加载时加载脚本

您的javascript在加载DOM之前启动,因此当它查找
document.getElementById(“main_table”),它返回未定义的

相反,在关闭body标记之前,将javascript移动到页面下方,如下所示:

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

多斯塔夫

你试着在做比萨饼之前把它吃掉。尝试引用元素时未创建该元素。在正文中的HTML之后添加脚本或将其加载到文档就绪状态。将
块作为
块中的最后一个元素。感谢您的回答!(而且,如果能够解释否决票的原因,那就太好了……如果我不知道我在第一个问题上做错了什么,我怎么能发布更好的问题……)正如你对折衷主义者答案的评论的旁注:这是一个HTA问题,
attachEvent
在使用的文档模式(IE7)下工作良好,即使在使用IE11运行HTA时也是如此。