Javascript 如何检查if语句的状态以确定其是否正常工作?

Javascript 如何检查if语句的状态以确定其是否正常工作?,javascript,arrays,svg,Javascript,Arrays,Svg,我正在尝试制作一种循环显示,循环显示svg文件中的一系列值以及移动文本元素。它使用hammer.js库并使用拖动事件。这些值可以向任意方向移动。在某种程度上我让它起作用了。当数组中显示最后一个值时,它会返回到数组的开头以获取第一个值。反之亦然 var keyArray = ["C","C#","Db","D","D#","Eb","E","F","F#","Gb","G","G#","Ab","A","A#","Bb","B"]; 这是我的阵列。下面是我如何将它从数组的末尾包装到数组的开头

我正在尝试制作一种循环显示,循环显示svg文件中的一系列值以及移动文本元素。它使用hammer.js库并使用拖动事件。这些值可以向任意方向移动。在某种程度上我让它起作用了。当数组中显示最后一个值时,它会返回到数组的开头以获取第一个值。反之亦然

var  keyArray = ["C","C#","Db","D","D#","Eb","E","F","F#","Gb","G","G#","Ab","A","A#","Bb","B"];
这是我的阵列。下面是我如何将它从数组的末尾包装到数组的开头

**根据一些评论的要求和Nina建议的解决方案,我修改了下面的代码以反映他们的建议。我还添加了几行文字,以清楚地了解总体情况**

var delta = keyArray.length - 5; // can be constant, it is always positive  

for(i=0;i<5;i++){
  //5 svg text element containing 5 musical keys
  keys = document.getElementById("keys"+i);
  //ev.deltaX is the change received from the hammer pan event
  //text element moves relative to its original starting X
  keys.setAttribute("x",startingSpots[i]+ev.deltaX%150);
  currentX=keys.getAttribute("x");
  currentEdgeIndex=keyArray.indexOf(keys.textContent);    

  //This if is what appears to be failing.  
  if (keys.getAttribute("x")>=565){
    keys.setAttribute("x",currentX-150);
    keys.textContent = keyArray[(currentEdgeIndex + delta) % keyArray.length];
  }  
}


这将保持相对于触摸事件的起始位置和增量的移动。

请删除不需要的
编号(…)
投射
…length
始终返回数字,计算结果也是一个数字

您实际的关键功能是向下移动5个条目,这可以通过简单的加法和模运算来实现,以将值保持在特定范围内,如

keys.textContent = keyArray[(keyArray.length + currentEdgeIndex - 5) % keyArray.length];
进一步简化后,该计算是否可以只增加一个正数

delta = keyArray.length - 5; // can be constant, it is always positive
keys.textContent = keyArray[(currentEdgeIndex + delta) % keyArray.length];

另外,你不需要一直调用Number()-所有这些值都已经是数字了。另外,
else
实际上不需要测试,它是唯一的其他选项,因为它是数字。我在没有条件和条件的情况下尝试了else,但两者都不起作用。我并不总是知道什么时候使用数字。通常情况下,我会以连接而不是添加的方式结束。如何检查if语句的计算和满足情况是否正确?简单地说,在浏览器中使用javascript调试器。取消对行的注释,在浏览器中加载文件,在受影响的行上设置断点,然后触发执行。执行可能会在页面加载时触发,在这种情况下,您必须在设置断点的情况下重新加载页面。这是调试101真的,搜索JS调试图版以获取更全面的信息。enhzflep,我尝试了调试,但遇到了困难,因为触发器是一个触摸事件,断点打断了触摸事件。有没有一种方法可以在没有断点的情况下查看和传输观察列表变量?您提供的代码做了很多简单的事情,但是它产生了与我以前的代码相同的不稳定行为,这使我认为即使在不满足条件的情况下,它也会进入if。我将用我的结果更新原始帖子。你遇到的问题不是索引,而是触摸事件,它的移动速度比它应该移动的速度快,afaict。我在触摸事件中发现了错误。我将使用修复程序编辑原始帖子。在您的模数技巧中,我使用了
keys.textContent=keyArray[(keyArray.length+currentEdgeIndex-5)%keyArray.length]用于向右移动和
keys.textContent=keyArray[(keyArray.length+currentEdgeIndex+5)%keyArray.length]用于向左移动。
keys.textContent = keyArray[(keyArray.length + currentEdgeIndex - 5) % keyArray.length];
delta = keyArray.length - 5; // can be constant, it is always positive
keys.textContent = keyArray[(currentEdgeIndex + delta) % keyArray.length];