Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数组织列表在firefox中不起作用_Javascript_Html - Fatal编程技术网

Javascript 函数组织列表在firefox中不起作用

Javascript 函数组织列表在firefox中不起作用,javascript,html,Javascript,Html,此函数用于组织列表,不按字母顺序组织:在Firefox和Internet Explorer中升序/降序。 在谷歌,chrome和Edge正在运行 以下是代码: <script type="text/javascript"> window.onload = function () { var desc = false; document.getElementById("Order").onclick = function () { sortUnorde

此函数用于组织列表,不按字母顺序组织:在Firefox和Internet Explorer中升序/降序。 在谷歌,chrome和Edge正在运行

以下是代码:

<script type="text/javascript">

window.onload = function () {
    var desc = false;
    document.getElementById("Order").onclick = function () {
        sortUnorderedList("PostList", desc);
        desc = !desc;
        return false;
    }
}

function compareText(a1, a2) {
    var t1 = a1.innerText,
        t2 = a2.innerText;
    return t1 > t2 ? 1 : (t1 < t2 ? -1 : 0);
}

function sortUnorderedList(ul, sortDescending) {
    if (typeof ul == "string") {
        ul = document.getElementById(ul);
    }

    var lis = ul.getElementsByTagName("li");
    var vals = [];

    for (var i = 0, l = lis.length; i < l; i++) {
        vals.push(lis[i]);
    }

    vals.sort(compareText);

    if (sortDescending) {
        vals.reverse();
    }

    ul.innerHTML = '';
    for (var i = 0, l = vals.length; i < l; i++) {
        ul.appendChild(vals[i]);
    }
}

</script>

window.onload=函数(){
var desc=假;
document.getElementById(“订单”).onclick=function(){
sortUnorderedList(“PostList”,desc);
desc=!desc;
返回false;
}
}
函数比较文本(a1、a2){
var t1=a1.innerText,
t2=a2.5;
返回t1>t2-1:(t1
这似乎是对的。您的元素ID正确吗?检查是否有多个元素也使用相同的ID。如果可以,发布HTML代码。

尝试以下操作:

document.getElementById(“hello”).onclick=talk;
函数谈话()
{
警惕(“它工作!”);
}

点击我如果你使用未知来源的代码,你甚至可能会在版权方面遇到麻烦!这是一个简单的版本(不,我不会为使用冒泡排序而道歉!),应该很容易理解

应OP的请求编辑以添加深度复制示例

<!DOCTYPE html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript">
// as shown in http://stackoverflow.com/questions/3066427/copy-all-childnodes-to-an-other-element-in-javascript-native-way
function copyElements (dst,src){
  while (src.hasChildNodes()) {
    dst.appendChild(src.removeChild(src.firstChild))
  }
}

function sortUnorderedList(element_id, direction){
  var table = document.getElementById(element_id);
  var rows,i,tmp;

  // get the rows in the order as they are
  rows = table.rows;
  i = rows.length - 1;

  // tmp must be a node for this highly simplified stuff to work
  tmp = document.createElement("getoffmylawn");

  // do a simple Bubble sort (sorts lexically, maybe not what you want!)
  // Assumes things to sort are in the first cell, adjust if necessary
  for(; i > 0; i--){
    for(j = 0;j < i; j++){
      if(direction === false){
        if(rows[j].firstChild.firstChild.textContent < rows[j+1].firstChild.firstChild.textContent){
          copyElements (tmp , rows[j]);
          copyElements (rows[j]   , rows[j+1]);
          copyElements (rows[j+1] , tmp);
        }
      }
      else{
        if(rows[j].firstChild.firstChild.textContent > rows[j+1].firstChild.firstChild.textContent){
          copyElements ( tmp , rows[j]);
          copyElements (rows[j]   , rows[j+1]);
          copyElements (rows[j+1] , tmp);
        }      
      }
    }
  }

}

window.onload = function () {
    var desc = false;
    document.getElementById("Order").onclick = function () {
        sortUnorderedList("FileList", desc);
        desc = !desc;
        return false;
    };
};
</script>
</head>
<body>
<table id="FileList">
<tr><td><a href="a">Foo</a></td></tr>
<tr><td><a href="b">Bar</a></td></tr>
<tr><td><a href="c">Foobar</a></td></tr>
<tr><td><a href="d">Something</a></td></tr>
<tr><td><a href="e">Anything</a></td></tr>
<tr><td><a href="f">Somehwere</a></td></tr>
<tr><td><a href="g">elsewhere</a></td></tr>
<tr><td><a href="h">completely lost</a></td></tr>
</table>
<button id="Order">Sort</button>
</body>
</html>

//如中所示http://stackoverflow.com/questions/3066427/copy-all-childnodes-to-an-other-element-in-javascript-native-way
功能复制元素(dst、src){
while(src.hasChildNodes()){
dst.appendChild(src.removeChild(src.firstChild))
}
}
函数sortUnorderedList(元素id,方向){
var table=document.getElementById(元素id);
变量行,i,tmp;
//按原样将行按顺序排列
行=表。行;
i=行数。长度-1;
//tmp必须是一个节点,这个高度简化的东西才能工作
tmp=document.createElement(“getoffmylawn”);
//做一个简单的冒泡排序(按词汇排序,可能不是你想要的!)
//假设要排序的内容位于第一个单元格中,如有必要,请进行调整
对于(;i>0;i--){
对于(j=0;j行[j+1].firstChild.firstChild.textContent){
copyElements(tmp,行[j]);
copyElements(行[j],行[j+1]);
复制元素(行[j+1],tmp);
}      
}
}
}
}
window.onload=函数(){
var desc=假;
document.getElementById(“订单”).onclick=function(){
sortUnorderedList(“文件列表”,desc);
desc=!desc;
返回false;
};
};
分类

如果您认为顺序是错误的,那么您已经了解了“词汇顺序”的实际含义。

要在Internet Explorer和Firefox中工作,我替换了:


innerText
textContent

什么似乎不起作用?控制台中是否有错误?它运行但没有达到预期效果?您确定单击处理程序不工作吗?也许你的过滤器有问题?根据这把小提琴,它工作正常:它怎么不工作?有例外吗?或者处理程序没有被触发?在运行任何其他代码之前,您是否在处理程序的开始处添加了一个
console.log()
,以查看它是否实际触发?谢谢。不起作用,因为列表是由另一个命令生成的。列表是否由另一个命令生成并不重要。唯一的区别是我使用了一个表,而不是你的无序列表。这就是全部。只需将
table.rows
table.getElementsByTagName(“li”)
交换,在
表中创建一个
ul
,在行中创建一个
li
。工作起来很有魅力。如果仍然不起作用,你必须发布一个完整的HTML文件,减少到发生错误的最低限度。否则,我们必须等待我的水晶球从200周年的维护和抛光中恢复。谢谢,它正在工作。很抱歉,因为我对编程了解不多,我很抱歉,我正在编辑我的博客。很抱歉,再次打扰您,但您的代码有一个bug,它只组织名称,但链接仍处于相同的位置。虽然这是一件罕见的事情,但我的代码没有bug,它可以正常工作。如果你想移动更多的内容,那么你必须实际移动,例如,通过这里描述的方法。如果你仍然想让我更新我的例子,每个单元格都是一个链接,请告诉我。