从输入创建和填充 Javascript 表

Posted

技术标签:

【中文标题】从输入创建和填充 Javascript 表【英文标题】:Javascript table creating and populating from inputs 【发布时间】:2014-04-15 17:20:45 【问题描述】:

我有一系列输入(一些收音机和几个复选框),例如:

<input type="radio" id="rd1" value="100" name="radios" class="slot" />
    <label for="rd1">Description of Radio 1</label>
<input type="radio" id="rd2" value="500" name="radios" class="slot" />
    <label for="rd1">Description of Radio 2</label>
<input type="radio" id="rd3" value="300" name="radios" class="slot" />
    <label for="rd1">Description of Radio 3</label>

<input type="checkbox" id="cb4" value="400" name="cb4" class="slot" />
    <label for="cb4">Description of CB 4</label>
<input type="checkbox" id="cb5" value="800" name="cb5" class="slot" />
    <label for="cb5">Description of CB 5</label>
<input type="checkbox" id="cb6" value="750" name="cb6" class="slot" />
    <label for="cb6">Description of CB 6</label>
<input type="checkbox" id="cb7" value="525" name="cb7" class="slot" />
    <label for="cb7">Description of CB 7</label>

我现在正试图创建一个表与javascript,将更新,以显示在列1中选择的输入,在第2列中的值,然后在底部的总的行。 (该表是使用 javascript 生成的,因为它在同一页面上的 4 个不同选项卡上重复使用,因此通过将新的 int 传递给函数,每件事都会获得一个唯一的 id,因此不会发生冲突)。

表格的结果格式应该是:

<table>
    <tbody>
        <tr>
            <th>Class</th>
            <th>Cost</th>
        </tr>
            <td>     <!— input ID (e.g. cb4) —> </td>
            <td>     <!—selected class cost —> </td>
        <tr>
        <tr>
            <td>Total: </td>
            <td id="costTotal"> <!— total of cost column —> </td>
        </tr>
    </tbody>
</table>

用于创建表格的 js 非常有效,我会弄清楚最后一点,但我正在努力如何进行行插入。

作为复选框被选择它们的输入ID,然后相应的值应插入到表与那么总TD更新来概括。如果取消选择复选框,则该行的相应行将被删除。对于具有按升序顺序添加一个新行积分(即,如果被选择的无线电1,则CB3,而CB2后,对1和3之间出现CB2的行选择时)。 P>

非常感谢您对此提出任何建议/建议/指导。

【问题讨论】:

【参考方案1】:

我不确定,我理解洞的想法。也许是这样:

$(document).on('change', '.tbl-src input', function()
  createTable('.tbl-src', '.table-holder'); 

);


function createTable(selectorSrc, selectorDest)
 var html = "<table>\
    <tbody>\
        <tr>\
            <th>Class</th>\
            <th>Cost</th>\
        </tr>";

  var sum = 0;  
  $(selectorSrc).find('input:checked').each(function(index, el)
     var $el = $(el);
    var val = parseFloat($el.val());
    var name = $el.attr('name');
     sum += val;

     html += "<tr>\
      <td>" + name + "</td> \
      <td>" + val + "</td> \
      </tr>";

  );

        html += "<tr>\
            <td>Total: </td>\
            <td id=\"costTotal\">" + sum + "</td>\
        </tr>\
    </tbody>\
</table>";
  $(selectorDest).html(html);

试试这个代码http://jsbin.com/cizovovo/2/

【讨论】:

完美且非常简洁的代码。非常感谢!您能否提供一种更改 - 将表创建和更新功能分开,这样每次输入状态更改时它不依赖于重新创建表?还是这对性能的影响如此微不足道,无关紧要? 这取决于 DOM 的大小和输入的数量。您可以通过单击特殊按钮来重建表,但如果您有大约 10-20 个输入 - 没有必要。共同的原因是进行优化和更少的 DOM 更改更好,但我认为大多数情况下它不需要担心

以上是关于从输入创建和填充 Javascript 表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 和 AJAX 根据邮政编码自动填充城市和州?

从文本字段中提取空数据。表已填充,但无法检索对象。 Java/JavaFX

使用从 VBA 代码派生的值填充表中的字段

如何将输入/选择值从网站保存到 XML/JSON 文件并使用 JavaScript 自动加载再次填充它们

从 json 动态创建的 Javascript 表单输入,需要将对象映射到另一个对象的正确字段并保存

如何使用Javascript表单元素填充html表?