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我把全部文件发过去
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我把全部文件发过去
解决方案 »
- 关于javascript的专业问题就高手指点
- 求段精简(最好有注释说明的)的图片连续滚动的js代码
- wirte a simple script to set the options for several export formats.
- 哪里在<script language="JScript.Encode"> 在线JavaScript 在线加密的网址,就是输入一段js,自动加密的
- 新手提问:如何检查一个页面中是否含有<form>对象
- 寻求帮助,一个生成JS文件的问题
- 怎样对动态生成的radio进行选择判断?
- 大侠给看看我的这棵树错在哪?(持高分待解)
- 这样的功能Javascript中能实现吗?有示意代码(仅仅5行),请执教。
- <body>中有多个form,当form2存在时就将光标焦点落在form2.text1上,否则没有光标焦点——这用javascript怎么写?
- this的疑惑
- 什么问题??求解答
<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>