【问题标题】:Adding rows to multiple tables dynamically on one web page using Javascript使用Javascript在一个网页上动态向多个表添加行
【发布时间】:2012-11-27 07:54:59
【问题描述】:

这可能是我缺乏使用 html5 的经验,但我有一些代码非常适合使用 Javascript 和 TBODY 标记节点将行动态添加到表中,但是当我有多个表时(我会这样做)在我需要在输入数据时动态填充的页面上......它不起作用......

我的问题是我不知道如何参考我也想添加信息的部分。

我尝试创建一个带有特定标签的节点,但它不是一个可识别的标签,所以它添加了数据但不在表内......奇怪。

这是我正在使用的 Javascript 代码

document.getElementById("sendNoteToDispatch").onclick=function()
    {
        event.preventDefault();
        console.log("Made it to note entry.");
        var noteTxt = $('#noteEntry').val();
        var noteEntBy = 'BGM';
        var nowNote = Date();
        var noteEntDate = dateFormat(nowNote, "mm/dd/yyyy HH:MM:ss");
        if (!document.getElementsByTagName) return;
        tabBody=document.getElementsByTagName("TBODY").item(0);
        row=document.createElement("TR");
        cell1=document.createElement("TD");
        cell2=document.createElement("TD");
        cell3=document.createElement("TD");
        textnode1=document.createTextNode(noteEntDate);
        textnode2=document.createTextNode(noteEntBy);
        textnode3=document.createTextNode(noteTxt);
        cell1.appendChild(textnode1);
        cell2.appendChild(textnode2);
        cell3.appendChild(textnode3);
        row.appendChild(cell1);
        row.appendChild(cell2);
        row.appendChild(cell3);
        tabBody.appendChild(row);
        document.getElementById("noteEntry").value = '';
        document.getElementById("noteEntry").focus();
       }

});

这是它使用的 html 代码。

<div id="Notes" class='acceptEnterNotes'>
            <form>
                <input type="text" name="noteEntry" id="noteEntry" class="noteEntryField" placeholder="Note Entry" size="115" />
                <button type="submit" id="sendNoteToDispatch" class="noteEntryButton buttonAddNote" value="Submit">
                    Submit Note
                </button>
            </form>
            <br />
            <br />
            <div id="filterNotesGriddiv">
                <input type="text" name="filterNotesGrid" id="filterNotesGrid" class="tableFilterInput" size="75" placeholder="Search the Table Below..." />
            </div>
            <div id="notesEntered">
                <table id="notesEnteredGrid" class="lowerSectionTable">
                    <tbody>
                        <tr class="enteredNotesHeader">
                            <td class="tableHeaderCells cellDateEntered">Date Entered</td><td class="tableHeaderCells cellEnteredBy">Entered by</td><td class="tableHeaderCells cellNoteEntered">Note</td>
                        </tr>
                    </tbody>
                </table>

            </div>

        </div>

我尝试将 tbody 标记更改为 tbodyNotes 之类的标记,但这不起作用,然后我尝试向 tbody 节点添加一个 ID,但这也不起作用......所以任何可以提供帮助的东西,所以我可以用不同的表格添加另一个部分……太棒了。

【问题讨论】:

  • 代码太多了,阅读jquery的克隆,克隆一行。
  • 你根本没有使用 jQuery :/
  • 这一行是 jquery:var noteTxt = $('#noteEntry').val();

标签: javascript html dynamic html-table row


【解决方案1】:

所以现在你在页面中获得了第一个 TBODY 标记:

tabBody=document.getElementsByTagName("TBODY").item(0);

然后构建一行单元格,然后将该行插入到 tbody 中:

tabBody.appendChild(row);

如果您将另一个表放入您的页面中,其中包含一个 TBODY,您可以获得第二个表的 TBODY 标记:

tabBody2=document.getElementsByTagName("TBODY").item(1);

一般来说,尽管您似乎使用了大量的猜测和(可能)剪切和粘贴的代码。当您说您尝试过 ID 并且它们不起作用时,这有点荒谬。元素上的 ID 可以正常工作,即使是 TBODY 标签。如果有疑问,请尝试首先从 firebug 或 chromebug 控制台调用它们,并获取您的代码行以使 TBODY 标记首先在那里工作,然后将其放入您的代码中。 试试这个:将两个带有 tbody 的表放入您的 html 页面。给 tbody 标签 id,比如“tbody1”和“tbody2”,然后打开你的 firebug 控制台并输入: document.getElementById("tbody1") 将鼠标悬停在结果上以查看页面中突出显示的元素。然后对 tbody2 进行同样的尝试。

最后,这些都不是 HTML5,它只是普通的、无聊的 HTML 和 Javascript。您可以在 mozilla dev 上查看 DOM API 级别 2、HTML4 规范和 Javascript 参考,以了解有关这些命令的更多信息。

【讨论】:

  • 感谢您的澄清。我边走边学。我肯定有很多粘贴的代码,但我确实尝试了解它在做什么。我想关于 getElementsByTagName 在 Elements 上的复数形式与 getElementById (单数形式)的部分让我有点吃惊。但是,当我在我的代码中尝试它时,它不起作用。不是没有什么可以说我没有输入错误的东西,但是一直在使用 javascript 控制台和 chrome 中的调试器来尝试定位我的问题,并修复有问题的行。回家后我一定会试试的。
  • 尝试了您的一些建议。将 item.0 更改为 itme.1 就可以了。我现在意识到这是对页面中使用相同标签的计数的引用。所以,tbody 第一次是 item.0,tbody 第二次是 item.1,以此类推。这很有效。我尝试使用带有 ID 的 tbody 标签,但它一直将数据放在标题行之前....不知道为什么,但我确定这是我正在做的事情。无论如何,感谢您的帮助和澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
相关资源
最近更新 更多