You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

chess.com控制台运行JS代码报newPieces.sort is not a function错误求解

问题原因

你初始声明时确实将newPieces赋值为数组,但后续执行newPieces = updatePieces();时,document.querySelectorAll()接口返回的是类数组结构NodeList,直接覆盖了原来的空数组值。NodeList原型链上没有内置sort方法,因此调用时会抛出类型错误。

解决方案

只要将updatePieces()返回的NodeList转为真正的数组即可,有两种常用写法:

  • 写法1:赋值时直接转换
// 把原来的 newPieces = updatePieces(); 替换为下面任意一行
newPieces = Array.from(updatePieces());
// 或者用扩展运算符写法
newPieces = [...updatePieces()];
  • 写法2:调用sort前转换
// 把原来的sort调用行替换为
Array.from(newPieces).sort(function(a,b){return a.classList[2].split('-')[1] - b.classList[2].split('-')[1]});
其他可选优化点

你的代码里还有两处可以调整的逻辑问题:

  1. toUpperCase()和toLowerCase()不会修改原字符串,只会返回新的转换后字符串,需要主动赋值:
if(pieceColor == 'w'){
    pieceType = pieceType.toUpperCase();
} else {
    pieceType = pieceType.toLowerCase();
}
  1. 代码末尾的fen变量未完成定义,后续补全逻辑即可。

内容的提问来源于stack exchange,提问作者sss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:06:03