0

假设我有这样的 html 表:

<table>
    <tr>
        <td>16</td>
        <td>3</td>
        <td>2</td>
        <td>13</td>
    </tr>
    <tr>
        <td>5</td>
        <td>10</td>
        <td>11</td>
        <td>8</td>
    </tr>
    <tr>
        <td>9</td>
        <td>6</td>
        <td>7</td>
        <td>12</td>
    </tr>
    <tr>
        <td>4</td>
        <td>15</td>
        <td>14</td>
        <td>1</td>
    </tr>
</table>

并有这样的字符串:I and my dog)...

我该怎么办,带有 jquery 库的 javascript 通过我的字符串进行迭代,并将这个字符串符号附加到我的 html 表中,所以第一个字母I转到 td,其中 td 包含 1 个数字,空格转到第二个,a转到 td 3 等,我是js新手,但必须这样做,我该怎么做?

如何通过字符串进行迭代,并将相同数量的字母附加到 td?

4

3 回答 3

1

首先,迭代字符串的每个字符:

for (var i=0, len=str.length; i<len; i++) {
  var char = str.charAt(i);

然后,找到td对应编号的:

$("td:contains(" + (i+1) + ")", $table).text(char);

$table你的桌子在哪里,例如var $table = $("table")在循环之外。

完整代码:

→ 工作 jsFiddle

var $table = $("table");
var str = "I and my dog";

for (var i=0, len=str.length; i<len; i++) {
  var char = str.charAt(i);
  $("td", $table).filter(function() {
    return $(this).text() == (i+1);
  }).text(char);
}

这还不能完全起作用,因为 :contains(1) 也匹配 16。我会调查的。

于 2013-10-27T17:21:09.683 回答
1

我将在这里使用纯 JavaScript 。

var str = 'I and my dog)..', // test string
    // get list of td elements
    td = document.getElementsByTagName('td'),
    i = 0,
    l = td.length;

// iterate thru each <td> element
for (; i < l; i++) {
  // save the number in the current <td>
  var num = parseFloat(td[i].innerText);
  // fill the current <td> with the matching string index;
  td[i].innerHTML = num + (str[--num] || ''); 
 //  (str[--num] || '') this will catch undefined string index
}
于 2013-10-27T17:24:57.523 回答
0

尝试这个:

var data  = "I and my dog)..."

$("td").each(function(index){
   $(this).text(data[index])
});
于 2013-10-27T17:20:09.343 回答