[英]javascript [array].splice not working (“Uncaught TypeError: collisions.splice is not a function”)
我正在嘗試從javascript中的數組中刪除特定項,但似乎無法使[array] .splice函數正常工作。
此代碼用於檢查SVG對象是否已與另一個對象碰撞(對於游戲)。 總是有3個對象與玩家相交,因此我希望將其從列表中刪除。
到目前為止,我的代碼是:
svg=document.getElementById("canvas");
function checkcollision(){
var r0=document.getElementById("rhb1").getBoundingClientRect(), r1=svg.createSVGRect(); r1.x=r0.left; r1.y=r0.top; r1.width=r0.width; r1.height=r0.height;
var collisions=svg.getIntersectionList(r1,null), len=collisions.length;
console.log(collisions);
for(i=len-1;i>=0;i--){
if(collisions[i].id=="renclosure"||collisions[i].id=="cplayer"||collisions[i].id=="rhb1"){
collisions.splice(i,1);
}
}
console.log(collisions);
if(collisions.length>0){
return true;
}
else{
return false;
}
}
控制台為沖突數組顯示的示例是
[<rect id="renclosure" x="0" y="0" width="15360" height="8640" class="st0"></rect>, <circle id="cplayer" cx="960" cy="540" r="50" class="st1"></circle>, <rect id="rhb1" x="0" y="0" width="100" height="100" class="st2" transform="translate(910, 490) rotate(0 050 050)"></rect>]
(直接復制)。
但是,谷歌瀏覽器每次都會引發錯誤“未捕獲的TypeError:collisions.splice不是函數”,我也不知道為什么(或如何修復)。
您的collisions
不是Array
類型
嘗試使用
Array.prototype.splice.call(collisions, i, 1)
。
關於splice.call()
請看這里Function.prototype.call
根據https://developer.mozilla.org/en/docs/Web/API/SVGSVGElement ,結果getIntersectionList
不是一個數組,但NodeList
。
但是,可以通過以下調用將NodeList
轉換為Array
: var div_array = Array.prototype.slice.call(div_list); // converts NodeList to Array
var div_array = Array.prototype.slice.call(div_list); // converts NodeList to Array
此處的更多信息: https : //developer.mozilla.org/zh-CN/docs/Web/API/NodeList
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.