我试图通过递增或递减1来迭代jQuery对象的数组。因此,对于递减部分,我使用以下代码:
var splitted_id = currentDiv.attr('id').split('_');
var indexOfDivToGo = parseInt(splitted_id[1]);
indexOfDivToGo = (indexOfDivToGo-1) % allDivs.length;
var divToGo = allDivs[indexOfDivToGo];所以我有4个id元素:
div_0
div_1
div_2
div_3我希望它迭代为3-2-1-0-3-2-等等。
但它在零之后返回-1,因此它被卡住了。所以它迭代如下:
3-2 -1 -0--1-卡住
我知道我可以通过将代码的第二行改为
indexOfDivToGo = (indexOfDivToGo-1 + allDivs.length) % allDivs.length;但我想知道为什么JavaScript没有计算负的mods。也许这也会对另一个程序员有所帮助。
发布于 2013-09-04 23:43:35
你可以试试这个:p-
Number.prototype.mod = function(n) {
return ((this % n) + n) % n;
}查看this
发布于 2013-09-04 23:44:27
如果模运算的第一个操作数为负,第二个操作数为正,那么从C继承的大多数语言都会返回负结果。我不确定为什么最初会做出这个决定。可能最接近当时处理器在汇编中所做的事情。无论如何,从那时起,“为什么”的答案很可能是“因为这是了解C的程序员所期望的”。
MDC Reference包含指向a proposal to introduce a proper operator的指针。但即使这样,也会保留现有的余数运算符(他们称之为“%”,以便更好地区分它们),并引入新的中缀单词表示法a mod b。该提案始于2011年,我不知道在这个方向上最近的发展。
https://stackoverflow.com/questions/18618136
复制相似问题