在.hta应用程序中使用JavaScript修改后,HTML不会更新

时间:2015-02-11 17:34:35

标签: javascript html browser hta

我有一个包含JavaScript和HTML的.hta文件。我的JavaScript代码使用“appendChild”之类的函数修改HTML,但之后HTML不会更新;即使元素被正确地附加在DOM-Structure中(我可以提醒.innerHTML,返回类似它的html代码,但它不会在浏览器中显示)。如果放入HTML文件,它可以正常工作。

<!DOCTYPE html>
<html>
<head>
  <hta:application id="prjreq_v1" applicationname="ProjectRequirements">
    <script>
    function appendDiv(){

        //Get the element that will get appended
        var contentElement = document.getElementById("main_table");

        //Create table row
        var tr = document.createElement("tr");
        tr.id = 0;

        //Create table column
        var td_0 = document.createElement("td");
        td_0.id = "date";
        td_0.innerText = "22/22/2222";

        //Append
        tr.appendChild(td_0);
        contentElement.appendChild(tr);

        //Alert outputs the modified HTML, but it doesn't show...
        alert(contentElement.innerHTML);
    }
    </script>
</head>
<body>
    <div id="content">
        <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">dd/MM/yyyy</td>
                <td id="source">Example1 Source</td>
                <td id="requirement">Lorem Ipsum dolores est</td>
            </tr>
        </table>
    </div>
    <script>(function (){appendDiv();})();</script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

Internet Explorer一直非常挑剔地向表添加行。但是,所有浏览器都假设您的表行包含在<tbody>元素中,并且它对于具有多个<tbody>元素的表有效。 (你无法在屏幕上看到它们;它只是一种结构性的东西。)

因此,如果您将<tr>包裹在<tbody>中,然后将 添加到<table>,那么它应该有效。

(我没有随时可用的IE,但如果你明确地包含<tbody>或者找到隐含的一个,那么它可能工作,然后用.appendChild()致电。)