for循环中的appendChild只添加1个孩子

2024-07-04

在 JavaScript 中,我使用 HTML 表格创建一个网格(您在 Photoshop 中看到的网格类型)。网格大小是可变的,即可以由用户更改,因此必须计算每个网格方块的大小并将其除以可用像素数以获得精确大小的网格。

我已经完成了所有这些,但在添加必要的表格元素来创建网格时遇到问题。我的代码处于完整工作状态,除非我使用appendChild()for 循环内的函数只附加一个子级,而实际上它应该附加到几百个。

My code:

grid.show = function(event)
{
    var e = event;

    if(grid.show_grid == false)
    {
        grid.show_grid = true;

        parent.document.getElementById("grid_table").style.display = "block";

        // Get grid (table) and create some elements.
        grid.get_grid = parent.document.getElementById("grid_table");
        grid.tr       = parent.document.createElement("tr");
        grid.td       = parent.document.createElement("td");

        // Clear the grid of all squares so we don't have to worry about subtracting anything.
        grid.get_grid.innerHTML = "";

        // Calculate the number of horizontal and vertical squares.
        var horizontal = Math.ceil(grid.total_width / grid.size);
        var vertical   = Math.ceil(grid.total_height / grid.size);

        // This was a nested loop, removed for demonstration.
        // Attempting to add 10 "<tr><td></td></tr>" to the table.
        for(var j = 0; j < 10; j++)
        {
            grid.tr.appendChild(grid.td);
        }

        //console.log(grid.tr);

        // Add the elements to the table.
        grid.get_grid.appendChild(grid.tr);

    }
    else
    {   
        grid.show_grid = false;
        parent.document.getElementById("grid_table").style.display = "none";
    }
}

这只返回单个表行,其中包含单个表数据,如下所示:

<tr>
    <td></td>
</tr>

我已经看过了这一页 https://stackoverflow.com/questions/1451009/javascript-infamous-loop-problem and 这一页 http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/,它们听起来很有希望,但我就是不知道如何实现这项工作。

EDIT:代码现在可以工作,解决方案:

grid.show = function(event)
{
    var e = event;

    if(grid.show_grid == false)
    {
        grid.show_grid = true;

        parent.document.getElementById("grid_table").style.display = "block";

        grid.get_grid           = parent.document.getElementById("grid_table");
        grid.tr                 = null;
        grid.td                 = null;
        grid.get_grid.innerHTML = "";

        var horizontal = Math.ceil(grid.total_width / grid.size);
        var vertical   = Math.ceil(grid.total_height / grid.size);

        for(var i = 0; i < vertical; i++)
        {
            grid.tr = parent.document.createElement("tr");

            for(var j = 0; j < horizontal; j++)
            {
                grid.td = parent.document.createElement("td");

                grid.td.width = grid.size;
                grid.td.height = grid.size;

                grid.tr.appendChild(grid.td);
            }
            grid.get_grid.appendChild(grid.tr);
        }
    }
    else
    {   
        grid.show_grid = false;
        parent.document.getElementById("grid_table").style.display = "none";
    }
}

您一遍又一遍地附加相同的元素。你需要打电话document.createElement每次你希望有一个新元素。

编辑:如果元素设置确实很复杂并且可能包含子元素,那么您也可以使用Node.cloneNode https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

for循环中的appendChild只添加1个孩子 的相关文章

  • 通过 AJAX 调用的 PHP header() 无法正常工作

    我是网络开发新手 现在我正在开发网站上的登录功能 我使用 Javascript AJAX 获取用户名和密码并将其发送到 PHP 文件以在 MYSQL 数据库上进行验证 这就是我要做的 我的问题是为什么 header 函数不能正常工作 我想在
  • 如何在 Titanium 中向 TableView 部分追加一行?

    我正在使用 Titanium 开发 iPhone 应用程序 并且需要将一行附加到特定的表格视图部分 https developer appcelerator com apidoc mobile 1 0 Titanium UI TableVi
  • 如何禁用已经预订的日期?

    我有一个预订酒店房间的表格 其中有两个字段 称为入住和退房 我在这里使用 jQuery datepicker 预订房间 我不想显示那些已经预订的日期 我已经尝试过这样的 function var excludedCheckInDates C
  • JavaScript 阻止表单提交

    当我按下 JavaScript 对话框上的取消按钮时 我试图让我的表单不提交 我有这个代码 document ready function submit click function e e preventDefault var link
  • php curl 获取 html 和 js 渲染

    php curl 只获取html页面的源代码 不执行js脚本 我需要我的网站获取已执行所有 JavaScript 的源代码 我使用ajax 但无法在页面中添加更多js 因为当我加载另一个页面时脚本会保留 我找到了 SpiderMonkey
  • 为 Flutter Web 应用程序添加 id 或 name 属性或其他标识方式?

    在编写 Flutter Web 应用程序时 我尝试利用基于 Selenium 的 Web UI Testing 框架 遗憾的是 我无法通过 id 或 name 属性识别代表某个 flutter 小部件的 HTML 元素 HTML 文档中不存
  • Angular ui - 选项卡控制器执行多次

    当我单击一个选项卡时 相应的控制器会执行 4 次 为什么 E g DetailsPersonController s init函数执行了4次 仅应在加载选项卡视图后执行 HTML 标签
  • 我应该担心 JavaScript 支持吗?

    我开发了一个支持ajax 的网站 然而 该网站目前无法在没有 JavaScript 的情况下运行 该网站在我测试过的任何浏览器以及 iPhone 诺基亚手机上都运行良好 但是 我还应该担心 javascript 支持吗 我知道有一些技术可以
  • AJAX 调用后使用 jquery 刷新 DOM

    我正在做一个新项目http www hotwirerevealed com http www hotwirerevealed com它显示 识别 hotwire com 上的酒店 输入状态和目的地后 我有一个 javascript 函数 它
  • 如何将node.js应用程序转换为cordova

    我们建造了一个node js适用于台式机和平板电脑的应用程序 它是完全基于网络的应用程序 现在我计划在中实现与本机应用程序相同的应用程序android using Apache cordova 在项目目录下 我们有node modules
  • 有没有可靠的方法在 IE11 中使用 ctx.drawImage() ?

    我有一个脚本 可以根据数据查询创建动态 SVG 图形 我需要将它们粘贴到 PDF 中 为此我使用 jsPDF 不幸的是 jsPDF 自己的 addSVG 似乎不起作用 所以我花了一些时间尝试使用画布将 SVG 转换为 PNG 我似乎可以将
  • 删除CKEditor图像插件中的htmlPreview

    我在 CKEditor 的图像插件中隐藏预览元素时遇到问题 我需要一个非常简单的图像对话框 其中只有图像源的输入字段和带有图像上传按钮的表单 因此 我使用这些自定义配置设置删除了不必要的元素 CKEDITOR on dialogDefini
  • 如何检测安装的Chrome版本?

    我正在开发一个 Chrome 扩展程序 我想知道是否有一种方法可以检测用户正在使用哪个版本的 Chrome 获取 Chrome 的主要版本作为整数 function getChromeVersion var raw navigator us
  • Twitter 引导工具提示说明不起作用?

    我注意到我的 Twitter 引导工具提示不尊重data position 所以 我前往Twitter Bootstrap 工具提示演示 http twitter github com bootstrap javascript html t
  • 使用相同的 URL 哈希刷新 BackboneJS? [复制]

    这个问题在这里已经有答案了 我当前的主干应用程序有一个 url localhost users 有没有办法访问localhost users当位于 URL 时localhost users所以它会刷新页面 目前 当我在localhost u
  • 不固定高度的滚动div

    我需要构建一个动态调整大小的滚动 div div 应动态调整大小以适应屏幕 但如果内容不适合屏幕 它应该显示一个滚动条 因此浏览器自己的滚动条永远不需要激活 我可以通过在 div 中放置另一个 div 并使用来让滚动条出现在 div 中ov
  • JavaScript。如果数组包含重复数字,Array .sort() 方法会为 Chrome 和 Firefox 返回不同的结果

    我有包含随机数的数组 当我试图通过排序这个数组时 sort 方法 如果数组包含重复的数字 结果会不同 下面的代码在 Chrome 和 Firefox 中的工作方式有所不同 1 2 3 4 5 6 7 8 9 2 15 3 4 5 1 2 3
  • IOS - React Native - 未处理的 JS 异常:SyntaxError

    每当我创建新的 React Native 项目时 我都会遇到问题 显示红色屏幕 并在 xcode 控制台中收到以下错误消息 嗨 我有同样的问题 在这里找到了解决方案 https github com facebook react nativ
  • WEBP图像回退

    我在互联网上搜索了很多 找不到可以完整教授的正确示例或完整教程 所以请大家给我推荐一些好的例子 我已经在很多网站上尝试过 WEBP 代码 例如与现代化工具一起使用 检查浏览器支持或使用背景图像 有一篇关于 Stucox 的文章 您可以在其中
  • JS:在调用文件中的每个其他函数之前调用某个函数

    我有一个关于在 JS 中更好地重用代码的问题 例如我有文件functions js具有以下功能 export const a gt export const b gt export const c gt const foo gt 我想在调用

随机推荐

  • 如何在 .proto 文件中处理带有协议缓冲区的通用类型对象?

    我花了一些时间寻找一些替代方法来处理通用对象 我看到了与我类似的问题 但没有我想象的那么具体 协议缓冲区有多种我可以使用的标量类型 但它们大多是原始的 我希望我的消息是灵活的 并且能够有一个作为某种列表的字段 假设我的 proto 文件如下
  • XAML 页面中的 Bindable 值存在问题

    我有一个保龄球回顾示例代码 其中输入了 3 场比赛并总结在系列列中 我遇到的问题是系列列没有按照我的预期进行更新 显然 我做错了什么 但看不到我做错了什么 以下是支持该应用程序的代码
  • 如何覆盖 nltk 的 pos_tag 分配给文本的 POS 标签?

    我使用 nltk 中的 pos tag 来标记一组 未标记的 技术文档中的文本并获得良好的结果 但它总是将 authenticated 等单词标记为动词 而有时它可以用作形容词 换句话说 仅仅改变标签并不是每次都有效 是否有一个好方法来覆盖
  • 嵌入式阵列文档中的 Morphia Mongodb 更新失败

    我是 Morphia 的新手 正在尝试更新嵌入式文档中的字段 这是当前的结构 class A List b BList class B String field 所以我的结构在 MongoDb 中如下所示 id ObjectId 5bab8
  • Python:多 QQ 绘图

    我是新人 通常来自 R 我想创建一个包含多行的 QQ Plot 我有一个测试版分布式数据集 我想尝试不同的 beta 分布参数并在oneQQ Plot 以便更好地进行比较 如果我尝试下面的代码 每个图都有相同的颜色 并且我得到 3 条 QQ
  • 我可以通过 Reflection 获取私有财产的价值吗?

    它似乎不起作用 ref new ReflectionObject obj if ref gt hasProperty privateProperty print r ref gt getProperty privateProperty 它进
  • Gulp Uglify 选项不适用

    您好 我正在为我工 作的公司制作一个主题 JS 部分无法在 uglify 中正确构建 我正在尝试使用 uglify 来简单地连接我的文件 这可以工作 但它们输出缩小和损坏 没有注释 我不明白为什么 下面是我的 gulp 任务 它运行正确 但
  • 如何在 ADF Oracle 11gR1 中的对话框窗口中的弹出窗口中刷新表

    我正在研究显示一个带有搜索表的弹出窗口的要求 当用户单击弹出窗口中的搜索按钮 提供输入文本框 时 需要使用新的数据集刷新搜索表 我创建了一个populateSearchTable 通过填充数组中的值来生成表的方法deviceListArra
  • MVC3 – ViewModel 和控制器功能:建议的设计模式

    我为一个不太可用的呼叫中心应用程序构建了一个简单的基于 MVC3 的票务输入站点 并尝试重构我的原型以更好地遵循设计模式 部分原因是为了使其更易于维护 但主要是作为一种学习练习 面向用户的视图是一种由基本用户信息以及允许选择各种资源类型的面
  • 将分层(树状)XML 读入 pandas 数据帧,保留层次结构

    我有一个 XML 文档 其中包含分层的树状结构 请参阅下面的示例 该文档包含几个
  • 尝试访问 USB 设备时出现 RPC_E_CANTCALLOUT_ININPUTSYNCCALL

    我有这段代码 var searcher new ManagementObjectSearcher root CIMV2 SELECT FROM Win32 DiskDrive foreach var queryObj in searcher
  • 如何防止使用外部客户端提供的任意 JSONB 查询字符串进行 SQL 注入?

    我有一个由 PostgreSQL 数据库支持的基本 REST 服务 其中有一个包含各种列的表 其中之一是包含任意数据的 JSONB 列 客户端可以将数据填充存储在固定列中 并提供任何 JSON 作为存储在 JSONB 列中的不透明数据 我希
  • BeautifulSoup 3.1 解析器太容易崩溃

    我在使用 BeautifulSoup 解析一些不可靠的 HTML 时遇到了麻烦 事实证明 新版本中使用的 HTMLParser 的容忍度低于以前使用的 SGMLParser BeautifulSoup 有某种调试模式吗 我正在尝试找出如何阻
  • 截至 2013 年,IE8 的响应式设计范围是否值得考虑?

    我仍然在这里看到与使响应式设计适用于 IE8 或 IE7 相关的问题 由于缺乏对 Windows 相关设备的了解 我的第一反应是 由于今天仍然运行 IE8 的移动设备数量微不足道 因此不值得为 IE8 实现响应式设计 对于这个特定的浏览器
  • 获取 PL/SQL 集合中元素的索引

    是否有内置函数可以确定 PL SQL 集合中元素的 第一个 索引 就像是 DECLARE TYPE t test IS TABLE OF VARCHAR2 1 v test t test BEGIN v test NEW t test A
  • 使用 SVG 的部分边框/描边

    我正在使用 svg d3 创建由 矩形 元素组成的图表 为每个矩形添加部分边框 描边 仅在矩形顶部 的最佳方法是什么 Thanks 我不认为 SVG 支持仅描边矩形或路径的一部分 描边不像 CSS 边框 您还有其他一些选择 所有这些都需要一
  • node.js 本机插件 - 包装类的析构函数不运行

    我正在用 C 编写一个 Node js 插件 我使用 node ObjectWrap 包装一些类实例 以将本机实例与 JavaScript 对象关联起来 我的问题是 包装实例的析构函数永远不会运行 这是一个例子 point cc inclu
  • Java JDK中有并发List吗?

    如何创建一个并发 List 实例 在其中可以按索引访问元素 JDK 有我可以使用的类或工厂方法吗 ConcurrentLinkedQueue 如果您不关心基于索引的访问 而只想要列表的插入顺序保留特性 那么您可以考虑java util co
  • PostgreSQL 使用“lag()”窗口函数更新查询

    我有一个涉及Postgresql数据库的任务 我对 SQL 不太有经验 我有一张贸易产品每周营业额的表格 每周提供以下信息 产品 周数 周营业额 可能是正值或负值 具体取决于天气 更多产品被购买或出售 我添加了一栏 其中包含每周的期末余额
  • for循环中的appendChild只添加1个孩子

    在 JavaScript 中 我使用 HTML 表格创建一个网格 您在 Photoshop 中看到的网格类型 网格大小是可变的 即可以由用户更改 因此必须计算每个网格方块的大小并将其除以可用像素数以获得精确大小的网格 我已经完成了所有这些