zk.addLoadEvent(function(){
var msgList = zk.$('msgList'),
cloneLi = msgList.getElementsByTagName('li')[0];
msgList.removeChild(cloneLi);//移除用作克隆用的的LI
var msgTitle = zk.$('msgTitle'),//获取表单对应元素
msgName = zk.$('msgName'),
msgContent = zk.$('msgContent'),
msgForm = zk.$('msgForm'),msg;
msgForm.onsubmit = function(){
msg = cloneLi.cloneNode(true);
var listTitle = zk.getElementsByClassName('listTitle',false,msg)[0],
listName = zk.getElementsByClassName('listName',false,msg)[0],
listDate = zk.getElementsByClassName('listDate',false,msg)[0],
listContent = zk.getElementsByClassName('listContent',false,msg)[0];
listTitle.innerHTML = msgTitle.value;
listName.innerHTML = msgName.value;
//得到并设置listDate的日期
listDate.innerHTML = zk.date('Y年m月d日 H:i:s');
listContent.innerHTML = zk.htmlSpecialChars(msgContent.value);
//console.log()
msg.style.display = 'block';
msgList.appendChild(msg);
return false;
}
//对留言进行排序 zk.$('sortASC').onclick = function(){
sortMsg(1);
return false;
};
zk.$('sortDESC').onclick = function(){
sortMsg(-1);
return false;
};
function sortMsg(dir){
//将贴子排序 dir 1 表示正序 -1表示倒序
var lis = msgList.getElementsByTagName('li'),
a = [],date,re = /(\d{4})\D+(\d{1,2})\D+(\d{1,2})\D+(\d{1,2})\D+(\d{1,2})\D+(\d{1,2})/,
dateArray,//放置匹配到的date!
setTime = new Date();
for(var i=0,len=lis.length;i<len;i++){
date = zk.getElementsByClassName('listDate',false,lis[i])[0];
//得到每个li留言里当前时间到1970年的毫秒数
dateArray = re.exec(date.innerHTML);
setTime.setFullYear(dateArray[1]);
setTime.setMonth(dateArray[2]-1);
setTime.setDate(dateArray[3]);
setTime.setHours(dateArray[4]);
setTime.setMinutes(dateArray[5]);
setTime.setSeconds(dateArray[6]);
//放入数组然后排序
a.push({
node:lis[i],
time:setTime.getTime()
});
}
a.sort(function($1,$2){
if($1.time > $2.time){
return dir;
}else if($1.time < $2.time){
return -dir;
}else{
return 0;
}
});
msgList.innerHTML = '';
var frag = document.createDocumentFragment();
for(var j=0;j<len;j++){
frag.appendChild(a[j].node);
}
msgList.appendChild(frag);
}

})
ie下报错是
SCRIPT5007: 无法获取属性“innerHTML”的值: 对象为 null 或未定义 
message.js, 行44 字符4    
就是这句dateArray = re.exec(date.innerHTML);
zk是我的库500多行发上来太麻烦了   求大牛解答!或者加我q我把全部文件发过去

解决方案 »

  1.   

    为什么是innerHTML。而不是value呢?
      

  2.   

    这不是表单是一个span   span里面有时间我把时间解析出来在把所有留言按顺序或倒序排列。==我贴html代码
      

  3.   

    <p id="sideBar">
    <a href="reg.htm">注册</a>
    <a href="login.htm">登录</a>
    <a href="###" id="sortASC">按时间正序排列</a>
    <a href="###" id="sortDESC">按时间倒序排列</a>
    </p>
    <ul id="msgList">
    <li>
    <h3> 
    标题:<span class="listTitle">留言标题</span> 
    留言人姓名:<span class="listName">留言人姓名</span>
     留言时间:<span class="listDate">留言时间</span>
    </h3>
    <div class="listContent">
    留言内容
    </div>
    </li>
    </ul>
    <form id="msgForm">
    <h3><a href="#">Top</a>发表留言</h3>
    <label>留言标题:<input type="text" id="msgTitle" /></label><br />
    <label>您的姓名:<input type="text" id="msgName" /></label><br />
    <label>留言内容:<textarea id="msgContent">请在这里输入留言内容......</textarea></label>
    <input type="submit" value="提交" />
    </form>