Javascript 按行和列对元素进行排序

Javascript 按行和列对元素进行排序,javascript,html,Javascript,Html,我有数字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&g

我有数字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>
  • 要素1
  • 要素1
  • 要素1
  • 要素1
  • 要素1
  • 要素1
  • 要素1
我想要以下输出:

<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>
    元素1 元素1 元素1 元素1 元素1 元素1 元素1 等
如何巧妙地实现这一点?

除法和模:

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)
}

你说的
是什么意思?我有数字4
?这太棒了。这是正确的方法,但数字并不完全正确。行为0,0,0,1,1,1,1,2,2,2,3,3等,列为1,2,3,0,1,2,3,0,1,2,3,0@tolborg不,他们不是。你试过小提琴吗?@Doorknow对不起,我没看到你更改了密码。这太棒了@托尔伯格很乐意帮忙!:)