繁体   English   中英

asp.net ajax属性值时间戳未定义

[英]asp.net ajax property value timestamp is undefined

我在asp.net ajax中进行值分配和检索时遇到问题。 时间戳记的值未定义

码:

 /// <reference name="MicrosoftAjax.js"/>

 Type.registerNamespace("LabelTimeExtender1");

 LabelTimeExtender1.ClientBehavior1 = function(element) {
 LabelTimeExtender1.ClientBehavior1.initializeBase(this, [element]);
 this._testelement=this.get_element();
 this._timestamp= this.get_element().attributes['TimeStamp'].value;
 alert(_timestamp);

},

 LabelTimeExtender1.ClientBehavior1.prototype = {
initialize: function() {
    LabelTimeExtender1.ClientBehavior1.callBaseMethod(this, 'initialize');
    setInterval (this.timer,1000);
    alert("after");

},
dispose: function() {        
    //Add custom dispose actions here
    LabelTimeExtender1.ClientBehavior1.callBaseMethod(this, 'dispose');
},
timer: function(){

   alert(this.timestamp);
            var splitdate=this._timestamp.split(/[:]+/);
            alert(splitdate);
            var date= new Date(this._timestamp);
            alert( date.toString());
            var datenow= new Date ();
            alert(datenow.toString());
            this._element.innerText=" ";
            alert(this._element);
              if(date.getUTCFullYear<datenow.getUTCFullYear)
            {
            alert("year");
             var myelement= this.get_element();
             myelement .innerHTML= date.getUTCFullYear.toString();
            }
            if(date.getUTCMonth<datenow.getUTCMonth)
            {
            alert("month");
            this.get_element().innerHTML=date.getUTCMonth.toString();
            }
            if(date.getUTCDay<datenow.getUTCDay)
            {
            this.get_element().innerHTML=date.getUTCDay.toString();
            }
            if(date.getUTCHours <datenow.getUTCHours )
            {
             this.get_element().innerHTML=date.getUTCHours .toString();
            }
            if(date.getUTCMinutes<datenow.getUTCMinutes)
            {
            this.get_element().innerHTML=date.getUTCMinutes.toString();
            }


},
   set_timestamp: function(value)
  {
  this._timestamp=value;
  },

    get_timestamp: function()
   {
   return this._timestamp;
   }



}
 LabelTimeExtender1.ClientBehavior1.registerClass('LabelTimeExtender1.ClientBehavior1',  Sys.UI.Behavior);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

为什么_timestamp的值未定义?

我建议将设置this._timestamp的代码移到您的initialize函数中。

我的另一个建议是即使在您自己的代码中也使用getter和setter来确保封装。 因此,警报实际上将是alert(this.get_timestamp()) 并且,在initialize函数中,您将调用this.set_timestamp(this.get_element().attributes['TimeStamp'].value)

感谢评论,我看到问题实际上出在setInterval调用中。 当您调用window.setInterval(this.timer, 1000); ,当调用timer函数时, this指的是window ,而不是您的对象。 因此,请执行以下操作:

var self = this;
window.setInterval(function () { 
    self.timer(); 
}, 1000);

这将使this内部timer()是指正确的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM