0

我正在从一个 php 数组生成一个 2 列的 HTML 表,如下所示:

<table>
  <?php
    $i=0
    foreach ($fullNameArray as $namePair){
      echo
        "<tr>
          <td id='first ".$i."'>".$namePair[0]."</td>
          <td id='last".$i."'>".$namePair[1]."</td>
        </tr>";
      $i++;
    }
  ?>
</table>

在 Javascript 中探索该表的最佳方式是什么,例如构建一个可以复制 PHP 数组的数组,即 [first name, last name] 对的数组。

4

3 回答 3

1

使用 PHP 的 json_encode 将您的数组编码为 Json,将此字符串分配给 javascript 变量并使用 javascript 将 json 解码为数组...

于 2013-03-12T18:58:36.040 回答
1

另一种方法可以将 json 分配给隐藏的输入而不是 javascript,然后在您的 javascript 代码中获取输入值。

于 2013-03-12T19:05:19.800 回答
1

如果你想采用老式的纯 JavaScript 方式,你可以做一些简单的 DOM 遍历。

如果您id在表格中添加一个,您的生活会轻松很多,特别是如果您在页面中有(或以后可能添加)其他表格。

<table id="nameTable">
    ...
</table>

现在您可以在 JavaScript 中访问该表并将对它的引用存储在一个变量中。您还需要初始化一个空数组/列表变量以稍后保存名称。

var nameTable = document.getElementById("nameTable");
var nameArray = [];

接下来,您开始循环遍历表格的子元素,每个子元素都是一个tr(表格行)元素。

for (var i=0; i<nameTable.childNodes.length; i++) {
    ...
}

在该for循环中,您将构建 [first name, last name] 对的列表。您将通过获取td当前行的两个(表格数据单元格)子项中的每一个的值来做到这一点。

    var dataCells = nameTable.childNodes[i].childNodes;
    var namePair = [dataCells[0].innerHTML, dataCells[1].innerHTML];

这应该会给你一个类似这样的 JSON 数组(我的值添加):

[
    ["Andy", "Jackson"],
    ["Barry", "Obama"],
    ["Benny", "Franklin"],
    ["Georgey", "Washington"],
    ["Billy", "Clinton"]
]

回顾一下,完整的代码看起来像这样:

var nameTable = document.getElementById("nameTable");
var nameArray = [];

for (var i=0; i<nameTable.childNodes.length; i++) {
    var dataCells = nameTable.childNodes[i].childNodes;
    var namePair = [dataCells[0].innerHTML, dataCells[1].innerHTML];
}

注意:这很有趣,但如果您不介意源代码中的硬编码 JSON 数组(如果您在那里有表格,那真的没关系),那么更好的解决方案可能是可能像@JayBhatt 建议的那样直接从 PHP 的标签中打印一个json_encoded 数组。<script>这可能是更快的方法,并且对用户浏览器的压力要小得多。

于 2013-03-12T19:19:25.370 回答