JavaScript字符串对象、日期对象、定时器

String字符串对象

String对象用于处理文本(字符串)。

toString||String()转换为字符串,不能转换null和undefined

    var a=10;
    console.log(a.toString());
    var b=20;
    console.log(String(b));
创建字符串

new String(); String类型有默认length属性,表示字符串包含多少个字符(空格也是字符)。

字符串方法

charAt():返回字符串指定位置的字符;字符串第一个字符下标为0,如果参数不在0与string.length之间,则返回一个空字符串。

search():查找字符串指定字符的位置,只能查找到第一个匹配的位置,如果找不到则返回-1。

substring(start,stop):star、stop为非负的整数,如果省略stop则返回的子串会一直到字符串结尾。

该方法返回一个新的字符串从start(包括start)到stop-1(不包括stop)的所有字符,长度为stop减start。

如果start=stop,返回一个长度为0的字符串;如果start>stop,则提取子串之前会先交换这两个参数。

slice(start,end):start、end可以为负数

该方法提取字符串的某个部分,并以新的字符串返回被提取的部分。包括字符串从start(包括start)开始到end(不包括end)结束为止的所有字符。

start、end如果为负数,则参数规定的是从字符串的尾部开始算起的位置,如-1指的是最后一个字符,以此类推。

substr(start,length):start可以为负数、length可选

该方法返回一个新的字符串,包含从star(包括start)处开始的length个字符;如果没有指定length则为从start到结尾的字符。

因ECMAscript未对此方法进行标准化,因此反对使用。

String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。

replace(ragexp/substr,replacement)用于在字符串中用一些字符替换另一些字符。

返回一个新的字符串,用replacement替换regexp第一次匹配或所有匹配之后得到的。

如果regexp具有全局标志 g,那么replace()将替换所有匹配的子串;否则默认只替换第一个匹配的子串

    var str="hello world";
    console.log(str.replace("l","*"));
    console.log(str.replace(/l/g,"*"));

split(separator,howmany):用于把一个字符串分割字符串数组。

separator为字符串或者表达式,从该参数地方分割字符串。howmany可选规定返回的数组最大长度,如果设置返回的字符串不会超过这个参数;如果没有设置整个字符串都会分割不考虑长度。

返回的数组不包含separator自身。如果把空字符串(“ “)作为separator,则字符串每个字符之间都会被分割。

concat(stringX…)用于将一个或多个字符串拼接起来,获得一个新的字符串。

indexOf()返回某个指定的字符在字符串中首次出现的位置,在字符串中从前向后搜索,如果没有则返回-1。

lastIndexOf()返回某个指定的字符在字符串中最后出现的位置,在字符串中从后向前搜索,如果没有则返回-1。

Date日期对象

Date对象用于处理日期和时间。

创建Date对象语法:

var myDate=new Date()

Date对象属性constructor(返回对创建次对象的Date函数的引用)和prototype(使有能力向对象添加属性和方法)。

Date对象方法

getFullYear():可返回一个表示年份的4位数字

getMonth():可返回表示月份的数字,返回0(一月)~11(十二月)的一个整数

getDate():可返回月份的某一天,返回1~31之间的一个整数

getDay():可返回表示星期的某一天的数字,返回0(周日)~6(周六)之间的一个整数

getMilliseconds():可返回当前时间的毫秒数,返回0~999之间的一个整数

getTime():可返回距1970年1月1日到现在的毫秒数

JavaScript计时事件

一次性定时器setTimeout()

setTimeout(code,millisec)

setTimeout()第一个参数是含有JavaScript语句的代码串,第二个参数指在执行代码前需要等待的毫秒数。只会执行一次。

clearTimeout(id_of_settimeout)

clearTimeout()可取消由setTimeout()方法设置的timeout。其参数必须是由setTimeout()返回的ID值。

循环定时器setInterval()

setInterval(code,millisec)

setInterval()方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval()方法会不停地调用函数,直到clearInterval()被调用或窗口关闭。

clearInterval(id_of_setinterval)

clearInterval()可取消由setInterval()设置的timeout。其参数必须是由setInterval()返回的ID值。

用一次性定时器模拟循环定时:

    <input type="button" value="开始/暂停" id="timebtn" />
    <input type="button" value="重置" id="timeclear"/>
    <input type="text" id="timetext" value="0" />
    <script>
        var i=0;
        var j=0;
        var t=null;
        var btn1=document.getElementById("timebtn1");
        var clear=document.getElementById("timeclear1");
        var text=document.getElementById("timetext");
        function time(){        
            text.value=i;        
            i+=1;
            t=setTimeout("time()",30);
        }
        function stop(){
            i=0;
            j=0;
            setTimeout(text.value=0,0)
            clearTimeout(t);
        }
        btn1.onclick=function(){
            if(j==0){
                time();
                j=1;
            }else if(j==1){
                clearTimeout(t);
                j=0;
            }
        }
        clear.onclick=function(){
            stop();
        }
    </script>
    
    
    

再来一个倒计时吧:

    <input type="date" id="inputdate" />
    <input type="button" id="timebtn2" value="设置日期" />
    <input type="button" id="timeclear2" value="暂停" />
    <div id="timelast"></div>
    <script>
        var date1 = document.getElementById("inputdate");
        var btn11 = document.getElementById("timebtn2");
        var btn22 = document.getElementById("timeclear2");
        btn11.onclick = function() {
            var str = date1.value;
            year2 = parseInt(str.slice(0, 4));
            month2 = parseInt(str.slice(5, 7));
            day2 = parseInt(str.slice(-2));
            t = setInterval('daojishi(year2,month2,day2,"timelast")', 30)
        }
        btn22.onclick = function() {
            clearInterval(t)
        }
        function daojishi(year, month, day, divid) {
            var today = new Date();
            var setday = new Date(year, month - 1, day);
            var lefttime = setday.getTime() - today.getTime();
            var seconds = parseInt(lefttime / 1000);
            var milliseconds=lefttime%1000;
            var second=seconds%60;
            var minutes=(seconds-second)/60%60;
            var hours=(seconds-second-minutes*60)/(60*60)%24
            var days=(seconds-second-minutes*60-hours*60*60)/(60*60*24);
            var div = document.getElementById(divid);
            div.innerHTML = "距离" + year + "年" + month + "月" + day + "日还有" + days + "天" + hours + "小时" + minutes + "分" + second + "秒" + milliseconds + "毫秒";
        }
    </script>