0

我有数字 4,即列数。

此外,我有一个包含 X 个元素的无序列表

<ul>
  <li>element 1</li>
  <li>element 1</li>
  <li>element 1</li>
  <li>element 1</li>
  <li>element 1</li>
  <li>element 1</li>
  <li>element 1</li>
  etc.
</ul>

我想要以下输出:

<ul>
  <li data-row="1" data-column="1">element 1</li>
  <li data-row="1" data-column="2">element 1</li>
  <li data-row="1" data-column="3">element 1</li>
  <li data-row="1" data-column="4">element 1</li>
  <li data-row="2" data-column="1">element 1</li>
  <li data-row="2" data-column="2">element 1</li>
  <li data-row="2" data-column="3">element 1</li>
  etc.
</ul>

我该如何巧妙地做到这一点?

4

1 回答 1

0

除法和模数:

lis = yourULElement.getElementsByTagName('li') // the <li> elements
limit = 4 // your number

for (var i = 0; i < lis.length; i ++) {
    lis[i].setAttribute('data-row', Math.floor(i / limit) + 1)
    lis[i].setAttribute('data-column', i % limit + 1)
}

这是一个 JSFiddle

图片

解释:

      | i / 4,            |
Index | Math.floor(i / 4) | i % 4
------+-------------------+-------
0     | 0, 0              | 0
1     | 0.25, 0           | 1
2     | 0.5, 0            | 2
3     | 0.75, 0           | 3
4     | 1, 1              | 0
5     | 1.25, 1           | 1
6     | 1.5, 1            | 2
7     | 1.75, 1           | 3
于 2013-09-06T12:09:33.903 回答