gpt4 book ai didi

javascript - 旧对象去哪儿了?

转载 作者:行者123 更新时间:2023-11-29 22:32:11 25 4
gpt4 key购买 nike

我已经实现了一个例程来对 xhtml 表格进行排序,该表格基于(= 或多或少复制自)Nicholas C. Zakas,Web 开发人员专业 JavaScript,Ch。 12. 它像宣传的那样工作,但我对代码的工作原理有一些疑问,非常感谢您的建议。以下是相关位:

var oldTable = document.getElementById('myTable');
var oldTableBody = oldTable.tBodies[0];
var oldTableRows = oldTableBody.rows;
var newTableArray = new Array();
for (var i = 0, rowCount = oldTableRows.length; i < rowCount; i++) {
newTableArray.push(oldTableRows[i]);
}
newTableArray.sort(chooseSort);
var newFragment = document.createDocumentFragment();
for (var i = 0, rowCount = newTableArray.length; i < rowCount; i++) {
newFragment.appendChild(newTableArray[i]);
}
oldTableBody.appendChild(newFragment);

我知道当我将新值推送到 newTableArray 时,我正在添加指向现有表行的指针,但我不确定 appendChild 方法是如何工作的。具体来说:

  1. 当我将每个数组项(指向原始行的指针)附加到文档片段时,我是只是添加一个指针(将行保留在原始表中),还是删除行对象从原始表格附加到其他地方?

  2. 当我将 newFragment 附加到 oldTableBody 时,如果我理解正确的话,我实际上不是将片段作为对象附加,而是我附加的行对象附加到它,这就是片段的工作方式。对吗?

  3. 当我将 newFragment 附加到 oldTableBody 时,我没有做任何明确的事情来删除原来存在的行。他们去哪儿了?重新附加它们是否会自动删除它们的任何旧痕迹,因为它们只能附加一次?如果我正在使用指针,而不是对象本身(我认为这是让我将它们附加到 newTableArray 而不会自动使它们从表中消失的原因),这是否意味着我可以有多个在某些情况下(oldTable 加上 newTableArray)指向同一对象的指针,但在其他情况下(原始表中的原始行加上我添加的新的排序行)?

对于天真的问题表示歉意,虽然得到我想要的结果是令人满意的,但不理解代码的工作原理让我感到不安。

最佳答案

我认为您所有的问题都可以归结为询问 appendChild 的作用。它将元素从它在 DOM 中的位置移除,并将相同 元素放在新位置。

关于javascript - 旧对象去哪儿了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6551300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com