javascript - 关于排序的一个问题
本文介绍了javascript - 关于排序的一个问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
var li = document.getElementsByTagName('li');
function bubbleSort(){
for(var i = 0;i < li.length-1;i++){
for(var j = 0;j < li.length-i-1;j++){
if(parseInt(li[j].innerHTML) > parseInt(li[j+1].innerHTML)){
swap(j,j+1);
}
}
}
return li;
}
function swap(beforeIndex,afterIndex){
var item = li[beforeIndex];
li[beforeIndex] = li[afterIndex];
li[afterIndex] = item;
}
function ff(){
var aa = bubbleSort();
for(var i = 0;i < aa.length;i++){
document.write(aa[i].innerHTML);
}
}
使用js往ul中添加li,然后使用冒泡排序,将ff函数绑定在一个按钮上,但是结果不正确,请问问题出在哪?
假如li里分别是5,4,3,2,1最后只输出5
解决方案
这个代码的作用域十分混乱,很容易出现变量互相影响的问题。
如果要修改这段代码仅仅达到你所需要而目的,首先需要改这个函数:
function swap(beforeIndex,afterIndex){
var item = li[beforeIndex].innerHTML;
li[beforeIndex].innerHTML = li[afterIndex].innerHTML;
li[afterIndex].innerHTML = item;
}
li[i]是dom元素,li[1] = li[2]这种操作是无效的。
然后是最后的document.write(aa[i].innerHTML),因为执行的时候文档流已经关闭,所以每次使用document.write都会清空文档,因此只会显示最后的aa[i].innerHTML,建议改成console.log或者append等方式。
这篇关于javascript - 关于排序的一个问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文