Javascript 如何检查if语句的状态以确定其是否正常工作?
我正在尝试制作一种循环显示,循环显示svg文件中的一系列值以及移动文本元素。它使用hammer.js库并使用拖动事件。这些值可以向任意方向移动。在某种程度上我让它起作用了。当数组中显示最后一个值时,它会返回到数组的开头以获取第一个值。反之亦然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"]; 这是我的阵列。下面是我如何将它从数组的末尾包装到数组的开头
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];