求助js代码IE10以下都不兼容

瑟瑟先生 2013-10-24 04:55:15
代码一:

/*
* sort.js中用到的小工具
*
*
*/


var CustomFunctions = {
//获取子节点的集合(ie,ff通用)
getChildNodes:function(node){
var arr = [];
var nodes = node.childNodes;
for(var i in nodes){
if(nodes[i].nodeType == 1){ //查找元素节点
arr.push(nodes[i]);
}
}
return arr;
},
//获取第一个元素子节点(ie,ff通用)
getFirstElementChild : function(node){
return node.firstElementChild ? node.firstElementChild : node.firstChild ;
},
//获取最后一个元素子节点(ie,ff通用)
getLastElementChild : function(node){
return node.lastElementChild ? node.lastElementChild : node.lastChild ;
},
//获取上一个相邻节点(ie,ff通用)
getPreviousSibling : function(node){
//找到上一个节点就返回节点,没找到就返回null
do{
node = node.previousSibling;
}while(node && node.nodeType!=1)
return node;
},
//获取下一个相邻节点 (ie,ff通用)
getNextSibling : function(node){
//找到下一个节点就返回节点,没找到就返回null
do{
node = node.nextSibling;
}while(node && node.nodeType!=1)
return node;
},
};

/*清除字符串前后的空格*/
String.prototype.trim=function(){
return this.replace(/^\s*|\s*$/,"");
};

/*
查找元素:
$q("div"):bytagname
$q(".l"):byclassname
$q("#l"):byid
$q("$name"):byname
selector:选择符
parentElement:父元素
*/
window.$q = function(selector,parentElement){
if(selector && (typeof selector) === 'string'){
selector = selector.trim();//去掉前后空格
var parentEl = parentElement || document;
var nodeArr = new Array();
var firstChar = selector.substr(0,1); //取得第一个字符
//以#开头,表示根据ID查找
if(firstChar === '#'){
return parentEl.getElementById(selector.substr(1));
}
//以$开头,根据name查找
else if(firstChar === '$'){
var all = parentEl.getElementsByTagName("*");
for(var i=0;i<all.length;i++){
var name = all[i].getAttribute("name");
if(name === selector.substr(1)){
nodeArr.push(all[i]);
}
}
delete i;
return nodeArr;
}
//以.开头,根据class名查找
else if(firstChar === '.'){
var className = selector.substr(1);
if(parentEl.getElementsByClassName){
return parentEl.getElementsByClassName(className);
}
else{
var childList = parentEl.getElementsByTagName("*");
for(var i=0;i<childList.length;i++){
var nodeClassName = childList[i].className;
var classNameArr = nodeClassName.split(' ');
for(var j=0;j<classNameArr.length;j++){
if(classNameArr[j]===className){
nodeArr.push(childList[i]);
}
}
delete j;
}
delete i;
return nodeArr;
}
}
//否则,根据标签名查找
else{
return parentEl.getElementsByTagName(selector);
}

}
else{
return document.all || document.getElementsByTagName("*");
}

};

代码二:

/*
* 用于页面简单排序的小工具
*
*
*/

/*
全局变量
ID: 保存插入数据的编号
color:保存原来的背景色
*/
var ID;
window.onload = function(){
var myTab = $q("#tab");
ID = myTab.rows.length-1;
}



//转换数据类型,v为值,dataType为数据类型
function convert(v,dataType){
switch(dataType){
case "int":
return parseInt(v);
case "float":
return parseFloat(v);
case "date":
return (new Date(Date.parse(v)));
default:
return v.toString();
}
}
//排序函数,index为索引,type为数据类型
function pai(index,dataType){
if(dataType === "汉字"){
return function compare(a,b){
var str1 = convert(a.cells[index].innerHTML,dataType);
var str2 = convert(b.cells[index].innerHTML,dataType);
return str1.localeCompare(str2);
};
}else{
return function compare(a,b){
//var str1 = convert(a.cells[index].firstChild.nodeValue,dataType);
//var str2 = convert(b.cells[index].firstChild.nodeValue,dataType);
var str1 = convert(a.cells[index].innerHTML,dataType); //两种方法效果一样
var str2 = convert(b.cells[index].innerHTML,dataType);
if(str1 < str2){
return -1;
}else if(str1 > str2){
return 1;
}else{
return 0;
}
};
}
}
//排序的过程
function sortTable(tableID,index,dataType){
var tab = $q("#"+tableID); //获取表格的ID
var td = tab.tBodies[0]; //获取表格的tbody
var newRows = td.rows; //获取tbody里的所有行
var arr = new Array(); //定义arr数组用于存放tbody里的行
//用循环将所有行放入数组
for(var i=0;i<newRows.length;i++){
arr.push(newRows[i]);
}
//判断最后一次排序的列是否与现在要进行排序的列相同,如果是就反序排列
if(tab.sortCol == index){
arr.reverse();
}else{
//使用数组的sort方法,传进排序函数
arr.sort(pai(index,dataType));
}
var oFragment = document.createDocumentFragment(); //创建文档碎片
for (var i=0; i < arr.length; i++) { //把排序过的aTRs数组成员依次添加到文档碎片
if(i%2 == 1){
oFragment.appendChild(arr[i]);
}else{
oFragment.appendChild(arr[i]);
}
}
td.appendChild(oFragment); //把文档碎片添加到tbody,完成排序后的显示更新
tab.sortCol = index; //记录最后一次排序的列索引
}

求助 求助 ,我在网上找的js代码用于表单排序,可是FF都能用,IE10也可以正常使用,但是IE10以下的都不起作用了,请各位朋友帮忙看看 如何处理,谢谢。
...全文
294 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
瑟瑟先生 2013-10-25
  • 打赏
  • 举报
回复
引用 3 楼 kingwolf_JavaScript 的回复:
    //获取第一个元素子节点(ie,ff通用)       getFirstElementChild : function(node){           return node.firstElementChild ? node.firstElementChild : node.firstChild ;       },       //获取最后一个元素子节点(ie,ff通用)       getLastElementChild : function(node){           return node.lastElementChild ? node.lastElementChild : node.lastChild ;       },  这两行代码有问题吧?获取到的有可能是文本节点。
感谢您的帮忙,现在问题解决了,恰如一楼所说,问题出在那里。
瑟瑟先生 2013-10-25
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
    getNextSibling : function(node){  
        //找到下一个节点就返回节点,没找到就返回null  
        do{  
            node = node.nextSibling;  
        }while(node && node.nodeType!=1)  
        return node;  
    }////////////,  //这里多了个“,”,标准浏览器或者IE8~IE9要加xhtml申明才能这样写
感谢大大指教,问题解决了,妈妈再也不用担心我的学习了。
浴火_凤凰 2013-10-24
  • 打赏
  • 举报
回复
    //获取第一个元素子节点(ie,ff通用)       getFirstElementChild : function(node){           return node.firstElementChild ? node.firstElementChild : node.firstChild ;       },       //获取最后一个元素子节点(ie,ff通用)       getLastElementChild : function(node){           return node.lastElementChild ? node.lastElementChild : node.lastChild ;       },  这两行代码有问题吧?获取到的有可能是文本节点。
浴火_凤凰 2013-10-24
  • 打赏
  • 举报
回复
getElementsByClassName低版本IE不支持。
Go 旅城通票 2013-10-24
  • 打赏
  • 举报
回复
    getNextSibling : function(node){  
        //找到下一个节点就返回节点,没找到就返回null  
        do{  
            node = node.nextSibling;  
        }while(node && node.nodeType!=1)  
        return node;  
    }////////////,  //这里多了个“,”,标准浏览器或者IE8~IE9要加xhtml申明才能这样写

87,919

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧