我现在用JS在两个SPAN中自动生成两个伪input文本框,现在要将文本框中的值取出并传回后台页面(.net/c#);
当document load完毕后我用getelementbyID和getElementsByTagName取不到伪文本框的值,还请高手指教<script type="javascript/text">    
function TimePicker(speed) {
            var strValue = '';
            var me = this;
            this.render = function(pId) {
                var dv = document.createElement('div');
                dv.className = 'timepicker';
                //    dv.innerHTML='<div class="left"><input type="text" maxlength="2" value="00" /><label>:</label><input type="text" maxlength="2"  value="00"/><label>:</label><input //type="text" maxlength="2" value="00" /></div>\
                //                 <div class="right"><img src="up.gif" title="增加" /><br /><img src="down.gif" title="减少"  /></div><div style="clear:both"></div>';
                dv.innerHTML = '<div class="left" id="left"><input type="text" maxlength="2" value="00" /><label>:</label><input type="text" maxlength="2"  value="00"/></div>\
                 <div class="right" id="right"><img src="up.gif" title="增加" /><br /><img src="down.gif" title="减少"  /></div><div style="clear:both"></div>';
                document.getElementById(pId).appendChild(dv);
                this.inputs = dv.getElementsByTagName('input');
                this.imgs = dv.getElementsByTagName('img');
                //  this.inputs[0].onblur=function(){me.inputBlurHandler(this,true);}
                this.inputs[0].onblur = this.inputs[1].onblur = function() { me.inputBlurHandler(this); }
                this.imgs[0].onmousedown = function() { me.imgMouseDownHandler(1); }
                this.imgs[1].onmousedown = function() { me.imgMouseDownHandler(-1); }
                this.imgs[0].onmouseup = this.imgs[1].onmouseup = function() { me.go = false; }
            }
            //this.getValue=function(){return this.inputs[0].value+':'+this.inputs[1].value+':'+this.inputs[2].value;}
            this.getValue = function() {
                strValue = this.inputs[0].value + ':' + this.inputs[1].value;
                return strValue;
            }
            this.padding = function(v) { if (v < 10) return '0' + v.toString(); return v; }
            this.inputBlurHandler = function(obj, isHour) {
                if (!/^\d{1,2}$/.test(obj.value)) obj.value = '00';
                else {
                    var v = parseInt(obj.value, 10);
                    if ((!isHour && v >= 24) || (!isHour && v >= 60)) obj.value = '00';
                }
            }
            this.increase = function(step) {
                //var h=parseInt(this.inputs[0].value,10),m=parseInt(this.inputs[1].value,10),s=parseInt(this.inputs[2].value,10);
                var h = parseInt(this.inputs[0].value, 10), m = parseInt(this.inputs[1].value, 10);
                m += step;
                //if(s>=60||s<0){m+=s<0?-1:1;s=s<0?59:0;}
                if (m >= 60 || m < 0) { h += m < 0 ? -1 : 1; m = m < 0 ? 59 : 0; }
                if (h >= 24 || h < 0) h = h < 0 ? 23 : 0;
                //this.inputs[2].value=this.padding(s);
                this.inputs[1].value = this.padding(m);
                this.inputs[0].value = this.padding(h);
                if (me.go) setTimeout(function() { me.increase(step); }, speed);
            }
            this.imgMouseDownHandler = function(step) {
                this.go = true;
                setTimeout(function() { me.increase(step); }, speed);
            }
            return strValue;
        }
        var tp1 = new TimePicker(200), tp2 = new TimePicker(200);
        tp1.render('spStart');
        tp2.render('spEnd'); 
    </script>
<%---------------------------------分割线-------------------------------------%><body>
 <span id="spStart"></span>
 <span id="spEnd"></span>
</body>

解决方案 »

  1.   

    getelementbyID应该这么写
    document.getElementById('这里面写id').innerHTML
      

  2.   

    document.getElementById('这里面写id').value
      

  3.   

    恩 我写的不严谨,代码中是这样写的,就是取不出值,在DOCUMENT LOAD完毕后查看渲染的HTML代码中两个SPAN中无任何元素。PS:这两个伪INPUT元素我是用来填写时间的(HH:MM)
      

  4.   


    你把js代码放到</body>标签上面~·
      

  5.   

    代码是放在<body>中的,发帖写错了<body>
     <span id="spStart"></span>
     <span id="spEnd"></span><script type="javascript/text">   
    function TimePicker(speed) {
      var strValue = '';
      var me = this;
      this.render = function(pId) {
      var dv = document.createElement('div');
      dv.className = 'timepicker';
      // dv.innerHTML='<div class="left"><input type="text" maxlength="2" value="00" /><label>:</label><input type="text" maxlength="2" value="00"/><label>:</label><input //type="text" maxlength="2" value="00" /></div>\
      // <div class="right"><img src="up.gif" title="增加" /><br /><img src="down.gif" title="减少" /></div><div style="clear:both"></div>';
      dv.innerHTML = '<div class="left" id="left"><input type="text" maxlength="2" value="00" /><label>:</label><input type="text" maxlength="2" value="00"/></div>\
      <div class="right" id="right"><img src="up.gif" title="增加" /><br /><img src="down.gif" title="减少" /></div><div style="clear:both"></div>';
      document.getElementById(pId).appendChild(dv);
      this.inputs = dv.getElementsByTagName('input');
      this.imgs = dv.getElementsByTagName('img');
      // this.inputs[0].onblur=function(){me.inputBlurHandler(this,true);}
      this.inputs[0].onblur = this.inputs[1].onblur = function() { me.inputBlurHandler(this); }
      this.imgs[0].onmousedown = function() { me.imgMouseDownHandler(1); }
      this.imgs[1].onmousedown = function() { me.imgMouseDownHandler(-1); }
      this.imgs[0].onmouseup = this.imgs[1].onmouseup = function() { me.go = false; }
      }
      //this.getValue=function(){return this.inputs[0].value+':'+this.inputs[1].value+':'+this.inputs[2].value;}
      this.getValue = function() {
      strValue = this.inputs[0].value + ':' + this.inputs[1].value;
      return strValue;
      }
      this.padding = function(v) { if (v < 10) return '0' + v.toString(); return v; }
      this.inputBlurHandler = function(obj, isHour) {
      if (!/^\d{1,2}$/.test(obj.value)) obj.value = '00';
      else {
      var v = parseInt(obj.value, 10);
      if ((!isHour && v >= 24) || (!isHour && v >= 60)) obj.value = '00';
      }
      }
      this.increase = function(step) {
      //var h=parseInt(this.inputs[0].value,10),m=parseInt(this.inputs[1].value,10),s=parseInt(this.inputs[2].value,10);
      var h = parseInt(this.inputs[0].value, 10), m = parseInt(this.inputs[1].value, 10);
      m += step;
      //if(s>=60||s<0){m+=s<0?-1:1;s=s<0?59:0;}
      if (m >= 60 || m < 0) { h += m < 0 ? -1 : 1; m = m < 0 ? 59 : 0; }
      if (h >= 24 || h < 0) h = h < 0 ? 23 : 0;
      //this.inputs[2].value=this.padding(s);
      this.inputs[1].value = this.padding(m);
      this.inputs[0].value = this.padding(h);
      if (me.go) setTimeout(function() { me.increase(step); }, speed);
      }
      this.imgMouseDownHandler = function(step) {
      this.go = true;
      setTimeout(function() { me.increase(step); }, speed);
      }
      return strValue;
      }
      var tp1 = new TimePicker(200), tp2 = new TimePicker(200);
      tp1.render('spStart');
      tp2.render('spEnd');  
      </script>
    </body>
      

  6.   


    如果取getElementById('spStart').innerHTMl的话还是可以将input中的内容全取出来,
    不过我就只想要伪文本框中的值
      

  7.   

    var inps = document.getElementById('spStart').getElementsByTagName('input'),
    len = inps.length,value = '';

    for(var i = 0; i < len; i++){
    value += inps[i].value;
    }

    alert(value)