用JS的a.innerText属性可以做到,再加上个自定义循环就OK了.

解决方案 »

  1.   

    不知道有没有直接将时间格式化输出的方法,我自己写了一个<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html>
    <head>
    <title>test</title>
    </head><script>
    Date.prototype.format = function(){
    var newMonth = null;
    switch(this.getMonth()){
    case 0:newMonth = "January";break;
    case 1:newMonth = "February";break;
    case 2:newMonth = "March";break;
    case 3:newMonth = "April";break;
    case 4:newMonth = "May";break;
    case 5:newMonth = "June";break;
    case 6:newMonth = "July";break;
    case 7:newMonth = "August";break;
    case 8:newMonth = "September";break;
    case 9:newMonth = "October";break;
    case 10:newMonth = "November";break;
    case 11:newMonth = "December";break;
    }
    return newMonth + " " + this.getYear();
    }function init(){
    var array = document.getElementsByTagName("li");
    var reg = /(\d{4}\/\d{2}\/\d{2}) - (\d{4}\/\d{2}\/\d{2})/;
    for(var i = 0;(e = array[i]); i++){
    var matcher = reg.exec(e.innerHTML);
    var fDate = new Date(matcher[1]);
    var lDate = new Date(matcher[2]);
    e.innerHTML = e.innerHTML.replace(reg,fDate.format() + " - " + lDate.format())
    }
    }
    </script><body onload="init()">
    <ul>
    <li><a href='/archives/1059689.html'>2007/04/01 - 2007/04/30</a></li>
    <li><a href='/archives/1056377.html'>2007/05/01 - 2007/05/31</a></li>
    <li><a href='/archives/1059688.html'>2007/06/01 - 2007/06/30</a></li>
    <li><a href='/archives/1065036.html'>2007/07/01 - 2007/07/31</a></li>
    <li><a href='/archives/1074669.html'>2007/08/01 - 2007/08/31</a></li>
    <li><a href='/archives/1082390.html'>2007/09/01 - 2007/09/30</a></li>
    </ul>
    </body></html>
      

  2.   

    上面的方法支持 IE6 和 FF,没试过 IE7
      

  3.   

    十分感谢! IE8 B2 里可以.
    同时期待如果有更好的方法.
      

  4.   

    恩, 用 IETester 和 Opera, Safari 试了一下都可以.
      

  5.   

    对了, 上面这段代码可不可以指定一下, 让它只替换某个地方的文本, 其他地方不会影响.
    另外如果不在 body 中加入 onload="init()" 可以吗?
    再次感谢!
      

  6.   

    额... 还有一个 Bug.
    在 Safari 里面, 输出结果中的 2007 变成 107 了 - -.April 107 - April 107
      

  7.   

    1、可以指定位置
    但是必须符合 “yyyy/MM/dd - yyyy/MM/dd”格式上面的代码中是将所有的 <li> 标签里的日期替换
    2、如果不加 onload="init()"
    那可以在 <script>.......</script> 的最后面加一句
    document.onload=init;
      

  8.   

    难道 Safari 里的 getYear() 返回的是 107 ??
    在这之前,我没有听说过 Safari ...............
      

  9.   

    http://topic.csdn.net/t/20021007/12/1075965.html
    原来有个 1900 的问题...
      

  10.   

    哈, return newMonth + " " + this.getFullYear(); 这样就好了...
      

  11.   

    用JS的a.innerText属性可以做到,再加上个自定义循环就OK了.
      

  12.   

    <ul>
    <li><a href='/archives/1059689.html'>2007/04/01 - 2007/04/30</a></li>
    <li><a href='/archives/1056377.html'>2007/05/01 - 2007/05/31</a></li>
    <li><a href='/archives/1059688.html'>2007/06/01 - 2007/06/30</a></li>
    <li><a href='/archives/1065036.html'>2007/07/01 - 2007/07/31</a></li>
    <li><a href='/archives/1074669.html'>2007/08/01 - 2007/08/31</a></li>
    <li><a href='/archives/1082390.html'>2007/09/01 - 2007/09/30</a></li>
    </ul>
    <script>
    var m = ['Janu', 'Febr', 'March','Apri','Mary','June','July','Augu','Sept','October','Nove','Dece'];
    var ul = document.getElementsByTagName('ul')[0];
    var reg = /(\d+)\/(\d+)\/\d+\s*\-\s*(\d+)\/(\d+)\/\d+(?=<\/a>)/gi;
    var str = ul.innerHTML.replace(reg,'$2 $1 - $4 $3');
    str = str.replace(/\d{1,2}(?=\D\d{4})/g, function(n){return m[parseInt(n)];})
    ul.innerHTML = str;
    </script>