javascript - 在 Javascript 中获取表格

标签 javascript html

我有一张 table :

<div ID="documents_list" style="visibility: hidden;">
    <table style="background-color:#000000;border:0;border-collapse:separate;border-spacing:0px;">
        <tr>
            <td style="padding:0px;">
                <table id="documentsTable" style="border:0;border-collapse:separate;border-spacing:1px;">
                    <tr bgcolor='#ffffff'>
                        <td bgcolor='#cccccc' style="padding:2px;" nowrap>Catalog:</td>
                        <td style="padding:2px;" colspan=3></td>
                    </tr>
                    <tr bgcolor='#ffffff'>
                        <td bgcolor='#cccccc' style="padding:2px;" nowrap>Doc.nr.</td>
                        <td bgcolor='#cccccc' style="padding:2px;" nowrap>Document name</td>
                        <td bgcolor='#cccccc' style="padding:2px;" nowrap></td>
                        <td bgcolor='#cccccc' style="padding:2px;" nowrap></td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
    <input type="button" value="Close" onClick="hide_documents_list()">
</div>

我正在尝试从 Javascript 访问它,这样我就可以更改它的内容并向其中添加行。其方法如下:

function show_documents(documents) {
    var table = document.getElementById("documentsTable");
    for (var i=0; i<documents.length; i++) {
        var row = table.insertRow(-1);

        var document = row.insertCell(0);
        var name = row.insertCell(1);
        var button = row.insertCell(2);
        var checkbox = row.insertCell(3);

        document.innerHTML = documents[i].document;
        name.innerHTML = "<a href='${pageContext.request.contextPath}/s?id=" + documents[i].document + "'>" + documents[i].name + "</a>";
        button.innerHTML = "<input type='button' value='Delete'>";
        name.innerHTML = "<input type='checkbox'>";
    }
    show_documents_list();
}

但是每当我尝试调用此方法时,都会收到以下错误Uncaught TypeError: Cannot read property 'getElementById' of undefined。问题是,该元素是在 HTML 中定义的,所以我无法真正找出问题出在哪里。

最佳答案

是的,就像 Tero Tolonen 说的那样。因为hoisting Javascript 在执行时将所有变量声明拉到顶部。

这意味着在代码执行方面您会得到类似的结果:

// because of hoisting variable decalarations get pulled to the top of the scope
var document;

之后,您尝试访问声明的变量上的方法getElementByID

从而导致类型错误。

关于javascript - 在 Javascript 中获取表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411352/

相关文章:

javascript - 国际象棋棋盘的 Canvas 与 DOM

javascript - Jquery ajax 响应似乎忽略类

如果变量有超过五个零,则 JavaScript 匹配

javascript - HTML JS Canvas 游戏 : Tile Collision Bug Makes Player Teleport Up

html - 克隆 CSS 样式的文件上传按钮

javascript - 将元素附加到列表会重置滚动位置

html - 在空 div 中使用图像作为背景以覆盖响应式 Web 应用程序中的整个区域

javascript - javascript中setTimeout函数之间的切换

javascript - d3 v5 缩放轴时使用嵌套值

javascript - Google Chrome 扩展如何等待页面完全加载(加载屏幕)