HTML代码:<ol id="test-list"> <li class="lang">Scheme</li> <li class="lang">JavaScript</li> <li class="lang">Python</li> <li class="lang">Ruby</li> <li class="lang">Haskell</li></ol>控制台:var list = document.getElementById('test-list')var slist = list.children;slist.sort(function(a, b){ return a.innerHTML > b.innerHTML ? 1 : -1 ;});这里报错:Uncaught TypeError: slist.sort is not a function at <anonymous>:1:7 用typeof slist测试返回是"objiect"然后控制台输入:slist=Array.prototype.slice.call(slist);typeof slist;还是返回"objiect",但是这时控制台输入:slist.sort(function(a, b){ return a.innerHTML > b.innerHTML ? 1 : -1 ;});运行正常,没有报错.排序结果也是对的,slist.forEach(function(el){ list.appendChild(el);})运行后<ol id="test-list"><li class="lang">Scheme</li><li class="lang">JavaScript</li><li class="lang">Python</li><li class="lang">Ruby</li><li class="lang">Haskell</li></ol>我想问一下slist=Array.prototype.slice.call(slist);这一步起到了什么作用,为什么不能直接调用sort();;进行排序?
添加回答
举报
0/150
提交
取消