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();;进行排序?
相关分类