xx521 发表于 2023-12-12 14:43:33

门户首页调用服务器时间问题

门户首页用脚本调用服务器时间,用内部刷新按钮后不出内容,只有用浏览器重新刷新下才出


function divDate(){
// 1.获取时间对象
        var date = Date.getFromServer();
// 2.获取年月日、时分秒
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var daye = date.getDate();
        var hour = date.getHours();
        var minute = date.getMinutes();
        var second = date.getSeconds();
//3.获取本地系统星期几   
   


   // var a = new Array("日", "一", "二", "三", "四", "五", "六");
//var week = new Date().getDay();
   // var str = "星期"+ a;

   //*******通过获取的服务器日期计算周几********


var weekArray = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");

var week = weekArray;//注意此处必须是先new一个Date

//4.计算当前是本年第几周
        var date2 = new Date(date.getFullYear(), 0, 1);
        var day1 = date.getDay();
        if (day1 == 0) day1 = 7;
        var day2 = date2.getDay();
        if (day2 == 0) day2 = 7;
        let d = Math.round((date.getTime() - date2.getTime() + (day2 - day1) * (24 * 60 * 60 * 1000)) / 86400000);
        //当周数大于52则为下一年的第一周
    var getYearWeek = " 第"+(Math.ceil(d / 7) + 1)+"周";

//5.封装成函数


        month=addZero(month);
        daye=addZero(daye);
        hour=addZero(hour);
        minute=addZero(minute);
        second=addZero(second);
    //ceil=addZero(getYearWeek);
        // 4.拼接字符串(此处需注意,必须拼接一个字符串,空串也行,否则将会变成数字相加)
        var divDate = year + '年'+ month + '月' + daye + '日' +week + ',' + getYearWeek;
        document.getElementById('divDate').innerHTML = divDate;

}


// 为数字添加0前缀
function addZero(num){
        if(num<10){
                num='0'+num;
        }
        return num;
}
// 先调用一次
divDate();//目的:衔接,
setInterval(divDate,1000);//每1s执行一次代码(所以开始执行的时候会间隔1s)

论坛管理员 发表于 2023-12-13 09:40:12

document.getElementById('divDate').innerHTML = divDate;不要用这种方式赋值,用平台自带的,this.data.divDate=divDate

xx521 发表于 2023-12-13 13:12:14

论坛管理员 发表于 2023-12-13 09:40
document.getElementById('divDate').innerHTML = divDate;不要用这种方式赋值,用平台自带的,this.data.d ...

改完了不出内容了啊

论坛管理员 发表于 2023-12-13 15:59:43

不好意思,divDate是个容器对吧,容器不能this.data赋值,需要this.form.get("divDate").node.innerHTML = divDate;;

xx521 发表于 2023-12-13 19:29:10

论坛管理员 发表于 2023-12-13 15:59
不好意思,divDate是个容器对吧,容器不能this.data赋值,需要this.form.get("divDate").node.innerHTML =...

不是容器啊,是label标签的标志写的divDate

xx521 发表于 2023-12-13 19:53:13

论坛管理员 发表于 2023-12-13 15:59
不好意思,divDate是个容器对吧,容器不能this.data赋值,需要this.form.get("divDate").node.innerHTML =...

不好意思 ,那个调用出来了,现在有个新的问题,页面上回来的时间是固定的,不能实现循环,我之前写的是一秒刷新一下,现在return写到function里不出内容,//function showTime(){
        // 1.获取时间对象
        var date = Date.getFromServer();
            // 2.获取年月日、时分秒
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var daye = date.getDate();
        var hour = date.getHours();
        var minute = date.getMinutes();
        var second = date.getSeconds();
   //3.获取星期几
    var week = date.getDay()


        // 3.给小于10的数字前补0
/*                if(hour<10){
                hour = '0' + hour;
        }
        if(minute<10){
                minute = '0' + minute;
        }
        if(second<10){
                second = '0' + second;
        }*/
        // 封装成函数
        month=addZero(month);
        daye=addZero(daye);
        hour=addZero(hour);
        minute=addZero(minute);
        second=addZero(second);
    week=addZero(week);
        // 4.拼接字符串(此处需注意,必须拼接一个字符串,空串也行,否则将会变成数字相加)
        var divTimes = hour + ':'+ minute + ':' + second;
        //document.getElementById('divTimes').innerHTML = divTimes;
        return this.data.divTimes=divTimes
//}
// 为数字添加0前缀
function addZero(num){
        if(num<10){
                num='0'+num;
        }
        return num;
}
// 先调用一次
showTime();//目的:衔接,
setInterval(showTime,1000);//每1s执行一次代码(所以开始执行的时候会间隔1s)

论坛管理员 发表于 2023-12-14 10:22:01

不要return,赋值不需要return

xx521 发表于 2023-12-14 12:03:58

论坛管理员 发表于 2023-12-14 10:22
不要return,赋值不需要return

不return 不出内容啊

论坛管理员 发表于 2023-12-14 17:06:41

您F12跟踪看看,是不是this的指向不对了,在最外层先把this赋给个变量,再试试看

xx521 发表于 2023-12-14 20:35:44

论坛管理员 发表于 2023-12-14 17:06
您F12跟踪看看,是不是this的指向不对了,在最外层先把this赋给个变量,再试试看 ...

试过了,只要不加return,什么值都不显示,return 别的this变量 都能出来,变量加到 function循环里,就输出不了,
但显示的值有内容
function showTime(){
        var date = Date.getFromServer();
// 2.获取时分秒

        var hour = date.getHours();
        var minute = date.getMinutes();
        var second = date.getSeconds();

        hour=addZero(hour);
        minute=addZero(minute);
        second=addZero(second);
   
        // 4.拼接字符串(此处需注意,必须拼接一个字符串,空串也行,否则将会变成数字相加)
        var mytimes = hour + ':' + minute + ':' + second;
        //document.getElementById('mytimes').innerHTML = mytimes;
   
   this.data.mytimes = mytimes

}

// 为数字添加0前缀
function addZero(num){
        if(num<10){
                num='0'+num;
        }
        return num;
}


showTime()
setInterval(showTime,1000);//每1s执行一次代码(所以开始执行的时候会间隔1s)
return mytimes


页: [1] 2
查看完整版本: 门户首页调用服务器时间问题